国产精品免费无遮挡无码永久视频-国产高潮视频在线观看-精品久久国产字幕高潮-国产精品99精品无码视亚

i.MX6ULL開發(fā)板線程同步POSIX無(wú)名信號(hào)量

發(fā)布時(shí)間:2021-4-2 13:58    發(fā)布者:落風(fēng)
為保證每個(gè)線程對(duì)同一資源訪問(wèn)有效,比如一個(gè)線程想要從共享資源讀數(shù)據(jù),而這些資源正在被其他線程修改,那么讀出來(lái)的數(shù)據(jù)是無(wú)效的,那么就要想辦法讓其他線程修改完再去讀,這時(shí)候就用到了同步機(jī)制。可以使用Linux系統(tǒng)提供的機(jī)制來(lái)對(duì)線程訪問(wèn)資源的順序進(jìn)行同步,本文檔挑選了信號(hào)量,互斥鎖,條件變量來(lái)介紹線程同步機(jī)制,實(shí)驗(yàn)代碼在sync/目錄下。

1 POSIX無(wú)名信號(hào)量
本章介紹POSIX 無(wú)名信號(hào)量,以下簡(jiǎn)稱信號(hào)量。信號(hào)量類似于計(jì)數(shù)器,操作方法和前面的System V 信號(hào)燈基本一樣。
使用信號(hào)量的步驟:
1.在程序全局區(qū)定義信號(hào)量;
2.使用seminit()初始化信號(hào)量;
3.使用sem_wait()和sem_post()對(duì)信號(hào)量進(jìn)行P/V操作;
4.使用sem_destroy()銷毀信號(hào)量。

信號(hào)量常用函數(shù)如下:
sem_init():對(duì)信號(hào)量值進(jìn)行初始化,
#include
int sem_init(sem_t *sem, int pshared, unsigned int value);
參數(shù)含義:
sem:指針,指向定義的信號(hào)量;
pshared:指明這個(gè)信號(hào)量用于進(jìn)程還是線程,0為線程,不等于0為進(jìn)程,本節(jié)填寫為0。
value:信號(hào)量初始值
返回值:成功返回0,錯(cuò)誤返回-1。

sem_wait():等待一個(gè)信號(hào)量,進(jìn)行P操作,信號(hào)量值-1;
sem_post():?jiǎn)拘岩粋(gè)信號(hào)量,進(jìn)行V操作,信號(hào)量值+1,定義如下:
#include
int sem_wait(sem_t *sem);
int sem_post(sem_t *sem);
參數(shù)含義:
sem:要操作的信號(hào)量;
返回值:成功返回0,錯(cuò)誤返回-1。

sem_destroy():銷毀初始化后的信號(hào)量
#include
int sem_destroy(sem_t *sem);
sem:要操作的信號(hào)量;
返回值:成功返回0,錯(cuò)誤返回-1。

實(shí)驗(yàn)代碼在sync/sem.c:路徑為:11_Linux系統(tǒng)開發(fā)進(jìn)階\Linux系統(tǒng)編程_章節(jié)使用資料。
使用信號(hào)量控制讀寫線程,初始化時(shí)寫信號(hào)量為1,讀信號(hào)量為0,那么讀線程就會(huì)阻塞,寫線程就會(huì)執(zhí)行并將寫信號(hào)-1,寫線程在fgets等待輸入,當(dāng)輸入完成后,將讀信號(hào)+1喚醒讀線程,這樣讀寫線程交替執(zhí)行就完成了同步。





本文地址:http://www.4huy16.com/thread-763992-1-1.html     【打印本頁(yè)】

本站部分文章為轉(zhuǎn)載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀點(diǎn)和對(duì)其真實(shí)性負(fù)責(zé);文章版權(quán)歸原作者及原出處所有,如涉及作品內(nèi)容、版權(quán)和其它問(wèn)題,我們將根據(jù)著作權(quán)人的要求,第一時(shí)間更正或刪除。
您需要登錄后才可以發(fā)表評(píng)論 登錄 | 立即注冊(cè)

廠商推薦

  • Microchip視頻專區(qū)
  • “芯”光璀璨,鵬城共賞——2025 Microchip中國(guó)技術(shù)精英年會(huì)深圳站回顧
  • 電動(dòng)兩輪車設(shè)計(jì)生態(tài)系統(tǒng)
  • 技術(shù)熱潮席卷三城,2025 Microchip中國(guó)技術(shù)精英年會(huì)圓滿收官!
  • 常見深度學(xué)習(xí)模型介紹及應(yīng)用培訓(xùn)教程
  • 貿(mào)澤電子(Mouser)專區(qū)
關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權(quán)所有   京ICP備16069177號(hào) | 京公網(wǎng)安備11010502021702
快速回復(fù) 返回頂部 返回列表