99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀(guān)看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

多線(xiàn)程兩種同步方式的操作方法分析

電子設(shè)計(jì) ? 來(lái)源:電子工程網(wǎng) ? 作者:張駿 ? 2021-06-26 14:57 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

在線(xiàn)程對(duì)共享相同內(nèi)存操作時(shí),就會(huì)出現(xiàn)多個(gè)線(xiàn)程對(duì)同一資源的使用,為此,需要對(duì)這些線(xiàn)程進(jìn)行同步,以確保它們?cè)谠L(fǎng)問(wèn)共享內(nèi)存的時(shí)候不會(huì)訪(fǎng)問(wèn)到無(wú)效的數(shù)值。

以下是線(xiàn)程的幾種同步方式:

1、 互斥量。

通過(guò)使用pthread的互斥接口保護(hù)數(shù)據(jù),確保同一時(shí)間只有一個(gè)線(xiàn)程訪(fǎng)問(wèn)數(shù)據(jù)?;コ饬繌谋举|(zhì)上講是一把鎖,在訪(fǎng)問(wèn)共享資源前對(duì)互斥量進(jìn)行加鎖,在訪(fǎng)問(wèn)完成后釋放互斥量上的鎖。如下例所示,就是互斥量對(duì)共享數(shù)據(jù)的操作:

}

2、信號(hào)

該信號(hào)量是Posix提供的基于內(nèi)存的信號(hào)量,它們由應(yīng)用程序分配信號(hào)量的內(nèi)存空間。如下例所示,就是信號(hào)量對(duì)共享數(shù)據(jù)的操作:

#include

#include

#include

int value = 5;

sem_t sem1,sem2;

void mainshow();

void *mythread();

int main()

{

int retval;

pthread_t tid;

retval = sem_init(&sem1,0,0);

retval = sem_init(&sem2,0,1);

retval =pthread_create(&tid,NULL,mythread,NULL);

mainshow();

pthread_join(tid,NULL);

printf(“value3 = %d\n”,value);

return 0;

}

void *mythread()

{

int retval;

retval = sem_wait(&sem1);

value = value + 1;

printf(“value1 = %d\n”,value);

retval = sem_post(&sem2);

pthread_exit((void *) 0);

}

void mainshow()

{

int retval;

retval = sem_wait(&sem2);

value = value + 1;

printf(“value2 = %d\n”,value);

retval = sem_post(&sem1);

}

責(zé)任編輯:gt

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀(guān)點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 數(shù)據(jù)
    +關(guān)注

    關(guān)注

    8

    文章

    7256

    瀏覽量

    91904
  • 線(xiàn)程
    +關(guān)注

    關(guān)注

    0

    文章

    508

    瀏覽量

    20227
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    Rust的多線(xiàn)程編程概念和使用方法

    和字段、常見(jiàn)用法以及多線(xiàn)程的一些實(shí)踐經(jīng)驗(yàn)。由淺入深帶你零基礎(chǔ)玩轉(zhuǎn)Rust的多線(xiàn)程編程。 線(xiàn)程的基本概念和使用方法 Thread是Rust中并發(fā)編程的一
    的頭像 發(fā)表于 09-20 11:15 ?1412次閱讀

    Python多線(xiàn)程編程原理

    多線(xiàn)程使用方法Python中使用線(xiàn)程兩種方式,分別是函數(shù)或者用類(lèi)來(lái)包裝線(xiàn)程對(duì)象。用函數(shù)來(lái)包裝
    發(fā)表于 11-22 14:01

    python創(chuàng)建多線(xiàn)程兩種方法

    MING3. 線(xiàn)程對(duì)象的方法上面介紹了當(dāng)前 Python 中創(chuàng)建線(xiàn)程兩種主要方法。創(chuàng)建線(xiàn)程是件
    發(fā)表于 03-15 16:47

    如何使用多線(xiàn)程和異步操作等并發(fā)設(shè)計(jì)方法來(lái)最大化程序的性能

    (超線(xiàn)程、雙核)的普及,多線(xiàn)程和異步操作等并發(fā)程序設(shè)計(jì)方法也受到了更多的關(guān)注和討論。本文主要是想探討一下如何使用并發(fā)來(lái)最大化程序的性能?! ?b class='flag-5'>多線(xiàn)程
    發(fā)表于 08-23 16:31

    QNX環(huán)境下多線(xiàn)程編程

    介紹了QNX 實(shí)時(shí)操作系統(tǒng)和多線(xiàn)程編程技術(shù),包括線(xiàn)程同步方法、多線(xiàn)程程序的
    發(fā)表于 08-12 17:37 ?30次下載

    Linux多線(xiàn)程同步方法

    線(xiàn)程對(duì)共享相同內(nèi)存操作時(shí),就會(huì)出現(xiàn)多個(gè)線(xiàn)程對(duì)同一資源的使用,為此,需要對(duì)這些線(xiàn)程進(jìn)行同步,以確保它們?cè)谠L(fǎng)問(wèn)共享內(nèi)存的時(shí)候不會(huì)訪(fǎng)問(wèn)到無(wú)效
    發(fā)表于 08-08 14:17 ?2142次閱讀

    設(shè)計(jì)多線(xiàn)程和多核系統(tǒng)

    如果您的微控制器應(yīng)用程序需要處理數(shù)字音頻,請(qǐng)考慮采用多線(xiàn)程方法。使用多線(xiàn)程設(shè)計(jì)方法可以使設(shè)計(jì)者以簡(jiǎn)單的方式重用其部分設(shè)計(jì)。
    發(fā)表于 08-14 15:42 ?9次下載
    設(shè)計(jì)<b class='flag-5'>多線(xiàn)程</b>和多核系統(tǒng)

    java多線(xiàn)程同步方法

    二、為什么要線(xiàn)程同步 因?yàn)楫?dāng)我們有多個(gè)線(xiàn)程要同時(shí)訪(fǎng)問(wèn)一個(gè)變量或?qū)ο髸r(shí),如果這些線(xiàn)程中既有讀又有寫(xiě)操作時(shí),就會(huì)導(dǎo)致變量值或?qū)ο蟮臓顟B(tài)出現(xiàn)混亂,
    發(fā)表于 09-27 13:19 ?0次下載

    多線(xiàn)程好還是單線(xiàn)程好?單線(xiàn)程多線(xiàn)程的區(qū)別 優(yōu)缺點(diǎn)分析

    摘要:如今單線(xiàn)程多線(xiàn)程已經(jīng)得到普遍運(yùn)用,那么到底多線(xiàn)程好還是單線(xiàn)程好呢?單線(xiàn)程多線(xiàn)程的區(qū)別又
    發(fā)表于 12-08 09:33 ?8.2w次閱讀

    Linux中的常用多線(xiàn)程同步方式淺析

    嵌入式linux中文站給大家介紹三Linux中的常用多線(xiàn)程同步方式:互斥量,條件變量,信號(hào)量。
    發(fā)表于 05-02 14:49 ?3288次閱讀
    三<b class='flag-5'>種</b>Linux中的常用<b class='flag-5'>多線(xiàn)程</b><b class='flag-5'>同步</b><b class='flag-5'>方式</b>淺析

    python創(chuàng)建多線(xiàn)程兩種方法

    1. 用函數(shù)創(chuàng)建多線(xiàn)程 在Python3中,Python提供了一個(gè)內(nèi)置模塊 threading.Thread ,可以很方便地讓我們創(chuàng)建多線(xiàn)程。 threading.Thread() 一般接收個(gè)參數(shù)
    的頭像 發(fā)表于 03-15 16:47 ?5558次閱讀

    多線(xiàn)程同步的幾種方法

    多線(xiàn)程同步是指在多個(gè)線(xiàn)程并發(fā)執(zhí)行的情況下,為了保證線(xiàn)程執(zhí)行的正確性和一致性,需要采用特定的方法來(lái)協(xié)調(diào)線(xiàn)程
    的頭像 發(fā)表于 11-17 14:16 ?1670次閱讀

    多線(xiàn)程如何保證數(shù)據(jù)的同步

    多線(xiàn)程編程是一并發(fā)編程的方法,意味著程序中同時(shí)運(yùn)行多個(gè)線(xiàn)程,每個(gè)線(xiàn)程可獨(dú)立執(zhí)行不同的任務(wù),共享同一份數(shù)據(jù)。由于
    的頭像 發(fā)表于 11-17 14:22 ?1731次閱讀

    java實(shí)現(xiàn)多線(xiàn)程的幾種方式

    Java實(shí)現(xiàn)多線(xiàn)程的幾種方式 多線(xiàn)程是指程序中包含了個(gè)或以上的線(xiàn)程,每個(gè)線(xiàn)程都可以并行執(zhí)行不同
    的頭像 發(fā)表于 03-14 16:55 ?1340次閱讀

    Python中多線(xiàn)程和多進(jìn)程的區(qū)別

    Python作為一高級(jí)編程語(yǔ)言,提供了多種并發(fā)編程的方式,其中多線(xiàn)程與多進(jìn)程是最常見(jiàn)的兩種方式之一。在本文中,我們將探討Python中
    的頭像 發(fā)表于 10-23 11:48 ?1023次閱讀
    Python中<b class='flag-5'>多線(xiàn)程</b>和多進(jìn)程的區(qū)別