精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

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

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

多線程兩種同步方式的操作方法分析

電子設(shè)計(jì) ? 來源:電子工程網(wǎng) ? 作者:張駿 ? 2021-06-26 14:57 ? 次閱讀

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

以下是線程的幾種同步方式:

1、 互斥量。

通過使用pthread的互斥接口保護(hù)數(shù)據(jù),確保同一時(shí)間只有一個(gè)線程訪問數(shù)據(jù)。互斥量從本質(zhì)上講是一把鎖,在訪問共享資源前對(duì)互斥量進(jì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)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 數(shù)據(jù)
    +關(guān)注

    關(guān)注

    8

    文章

    6890

    瀏覽量

    88826
  • 線程
    +關(guān)注

    關(guān)注

    0

    文章

    504

    瀏覽量

    19651
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    多線程編程之四 線程同步

    多線程編程之四 線程同步八、線程同步  雖然多線程能給我們帶來好處,但是也有不少問題需要解決
    發(fā)表于 10-22 11:43

    Python多線程編程原理

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

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

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

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

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

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

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

    Linux多線程同步方法

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

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

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

    java多線程同步方法

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

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

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

    Linux中的常用多線程同步方式淺析

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

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

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

    多線程同步的幾種方法

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

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

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

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

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

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

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