衡阳派盒市场营销有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

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

電子設計 ? 來源:電子工程網 ? 作者:張駿 ? 2021-06-26 14:57 ? 次閱讀

在線程對共享相同內存操作時,就會出現多個線程對同一資源的使用,為此,需要對這些線程進行同步,以確保它們在訪問共享內存的時候不會訪問到無效的數值。

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

1、 互斥量。

通過使用pthread的互斥接口保護數據,確保同一時間只有一個線程訪問數據。互斥量從本質上講是一把鎖,在訪問共享資源前對互斥量進行加鎖,在訪問完成后釋放互斥量上的鎖。如下例所示,就是互斥量對共享數據的操作:

}

2、信號

該信號量是Posix提供的基于內存的信號量,它們由應用程序分配信號量的內存空間。如下例所示,就是信號量對共享數據的操作:

#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);

}

責任編輯:gt

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 數據
    +關注

    關注

    8

    文章

    7139

    瀏覽量

    89579
  • 線程
    +關注

    關注

    0

    文章

    505

    瀏覽量

    19758
收藏 人收藏

    評論

    相關推薦

    Rust的多線程編程概念和使用方法

    和字段、常見用法以及多線程的一些實踐經驗。由淺入深帶你零基礎玩轉Rust的多線程編程。 線程的基本概念和使用方法 Thread是Rust中并發編程的一
    的頭像 發表于 09-20 11:15 ?1026次閱讀

    Python多線程編程原理

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

    python創建多線程兩種方法

    MING3. 線程對象的方法上面介紹了當前 Python 中創建線程兩種主要方法。創建線程是件
    發表于 03-15 16:47

    如何使用多線程和異步操作等并發設計方法來最大化程序的性能

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

    QNX環境下多線程編程

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

    Linux多線程同步方法

    線程對共享相同內存操作時,就會出現多個線程對同一資源的使用,為此,需要對這些線程進行同步,以確保它們在訪問共享內存的時候不會訪問到無效
    發表于 08-08 14:17 ?2065次閱讀

    設計多線程和多核系統

    如果您的微控制器應用程序需要處理數字音頻,請考慮采用多線程方法。使用多線程設計方法可以使設計者以簡單的方式重用其部分設計。
    發表于 08-14 15:42 ?9次下載
    設計<b class='flag-5'>多線程</b>和多核系統

    java多線程同步方法

    二、為什么要線程同步 因為當我們有多個線程要同時訪問一個變量或對象時,如果這些線程中既有讀又有寫操作時,就會導致變量值或對象的狀態出現混亂,
    發表于 09-27 13:19 ?0次下載

    多線程好還是單線程好?單線程多線程的區別 優缺點分析

    摘要:如今單線程多線程已經得到普遍運用,那么到底多線程好還是單線程好呢?單線程多線程的區別又
    發表于 12-08 09:33 ?8.2w次閱讀

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

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

    python創建多線程兩種方法

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

    多線程同步的幾種方法

    多線程同步是指在多個線程并發執行的情況下,為了保證線程執行的正確性和一致性,需要采用特定的方法來協調線程
    的頭像 發表于 11-17 14:16 ?1277次閱讀

    多線程如何保證數據的同步

    多線程編程是一并發編程的方法,意味著程序中同時運行多個線程,每個線程可獨立執行不同的任務,共享同一份數據。由于
    的頭像 發表于 11-17 14:22 ?1315次閱讀

    java實現多線程的幾種方式

    Java實現多線程的幾種方式 多線程是指程序中包含了個或以上的線程,每個線程都可以并行執行不同
    的頭像 發表于 03-14 16:55 ?782次閱讀

    Python中多線程和多進程的區別

    Python作為一高級編程語言,提供了多種并發編程的方式,其中多線程與多進程是最常見的兩種方式之一。在本文中,我們將探討Python中
    的頭像 發表于 10-23 11:48 ?494次閱讀
    Python中<b class='flag-5'>多線程</b>和多進程的區別
    百家乐大赢家小说| 太阳城百家乐群| 大发888注册的微博| 百家乐玩法教材| 百家乐官网资金注码| 百家乐论坛bocaila| 网上百家乐投注技巧| 百家乐官网最佳投注办法| 大发888官方下载 网站| 百家乐15人桌子| 百家乐官网博国际| 皇博线上娱乐| 百家乐相对策略| 金鼎百家乐官网局部算牌法| 澳门赌场攻略| 大发888娱乐城充值| 百家乐赌博是否违法| 黄金城百家乐官网手机版| 赌场百家乐是如何玩| 58百家乐官网的玩法技巧和规则| 百家乐官网玩法教学视频| 澳门美高梅金殿| 缅甸百家乐官网博彩| 大发德州扑克| 大发888真人网址的微博| 赌百家乐2号破解| 澳门百家乐会出千吗| 缅甸百家乐官网赌场| 百家乐官网庄闲庄庄闲| 百家乐官网赌场游戏平台| 大发888真人娱乐场| 百家乐专用| 百家乐娱乐平台官网网| 百家乐赌场在线娱乐| 百家乐赌博机玩法| 百家乐官网投注综合分析法| 百家乐官网编单短信接收| 皇冠网百家乐官网赢钱| 百家乐官网d博彩论坛| 百家乐官网心态研究| 百家乐官网五式缆投法|