国产成人精品三级麻豆,色综合天天综合高清网,亚洲精品夜夜夜,国产成人综合在线女婷五月99播放,色婷婷色综合激情国产日韩

當前位置:首頁 > 嵌入式培訓(xùn) > 嵌入式學(xué)習(xí) > 講師博文 > 信號量是什么,讓你幾分鐘弄懂

信號量是什么,讓你幾分鐘弄懂 時間:2018-07-16      來源:未知

在了解和學(xué)習(xí)信號量之前,我們需要明確一點,信號量和信號不同,切勿將信號和信號量混淆,因為二者根本不是一個概念。

一、 什么是信號量?

為了防止出現(xiàn)因多個程序同時訪問一個共享資源而引發(fā)的一系列問題,我們需要一種方法,它可以通過生成并使用令牌來授權(quán),在任何時刻只能有一個執(zhí)行線程訪問代碼的臨界區(qū)域。臨界區(qū)域是指執(zhí)行數(shù)據(jù)更新的代碼需要獨占式地執(zhí)行。

信號量是一個特殊的變量,程序?qū)ζ湓L問都是原子操作,且只提供它等待或者發(fā)送兩種操作,也就是P操作和V操作。何為P/V操作:舉個例子,我們平常最常見也最簡單的信號形式——二值信號量。P操作則是對等待的信號量的值進行減一操作,而V操作則是對某一個信號量執(zhí)行加一操作。這里我們暫時也僅針對于二值信號量來討論。

二、信號量的工作原理

信號量只能進行兩種操作等待和發(fā)送信號,即P操作和V操作,他們的行為是這樣的:

P:如果信號量的值大于零,就給它減1;如果它的值為零,就掛起該進程的執(zhí)行直到

該信號量的值不為一為止。

V:如果有其他進程因等待該信號量而被掛起,就讓它恢復(fù)運行,如果沒有進程因等待該 信號量而掛起,就給它加1。

三、 POSIX信號量相關(guān)函數(shù)

int sem_init(sem_t *sem, int pshared, unsigned int value);

int sem_wait(sem_t *sem);

int sem_post(sem_t *sem);

sem_init可以設(shè)置信號量的初始值和初始狀態(tài),sem_wait則會等待指定信號量,如果該值為0,則等待,否則對信號量的值減一并獲取資源,即P操作。sem_post則對指定信號量的值加一,即V操作。

四、 總結(jié)

信號量是一個特殊的變量,程序?qū)ζ湓L問都是原子操作,且只允許對它進行等待(即P(信號變量))和發(fā)送(即V(信號變量))信息操作。我們通常通過信號來解決多個進程或線程對同一資源的訪問競爭的問題。

上一篇:波特率是什么,讓你詳細了解

下一篇:管道通信: 有名管道 無名管道,行業(yè)大牛通通教會你

熱點文章推薦
華清學(xué)員就業(yè)榜單
高薪學(xué)員經(jīng)驗分享
熱點新聞推薦
前臺專線:010-82525158 企業(yè)培訓(xùn)洽談專線:010-82525379 院校合作洽談專線:010-82525379 Copyright © 2004-2022 北京華清遠見科技集團有限公司 版權(quán)所有 ,京ICP備16055225號-5京公海網(wǎng)安備11010802025203號

回到頂部