91精品一区二区三区久久久久久_欧美一级特黄大片色_欧美一区二区人人喊爽_精品一区二区三区av

位置:51電子網 » 技術資料 » 通信網絡

信號量函數sem.c

發布時間:2012/4/3 0:42:29 訪問次數:1521

    MantisOS中下信號量函數sem.c,主要調用了Linux底層的AD736JN信號量函數接口semaphore.c來控制多線程環境中共享資源的計數器。

    信號量是在多線程環境中共享資源的計數器。對信號量的基本操作無非有3個:對信號量的增加;然后阻塞線程等待,直到信號量不為空才返回;對信號量的減少。在編程中,信號量最常用的方式就是一個線程A使用sem_wait阻塞,因為此時信號量計數為O,直到另外一個線程B發出信號post后,信號量計數加1,此時,線程A得到了信號,信號量的計數為1不為空,所就從sem_wait返回,然后信號量的計數又減1變為零。在使用信號量之前,必須對信號量進行初始化。第三個參數通常設置零,初始化信號的計數為0,這樣第一次伎用sem_wait時會因為信號計數為O而等待,直到在其他地方信號量post才返回(除非用戶明白自己在干什么,否則不要將第三個參數設置為大于0的數)。第二個參數是用在進程之間的數據共享標志,如果僅僅使用在當前進程中,設置為0。如果要在多個進程之間使用該信號,設置為非零。但是在Linux線程中,暫時還不支持進程之間的信號共享,所以第二個參數必須設置為0。當信號的計數為零時,sem_wait將休眠掛起當前調用線程,直到信號量計數不為零。在sem_wait返回后信號量計數將自動減1。解除信號量等待限制。讓信號量計數加1,該函數會立即返回不等待。現在sem_post被POSIX所規范,當它改變信號量計數器值時是線程安全的。
    當semjnit失敗時,常見錯誤有:第三個參數value值超過了系統能夠承受的最大值SEM_VALUE_MAX;將第二參數設置為非零,如果是Linux系統,則將第二個參數設置為零。

    MantisOS中下信號量函數sem.c,主要調用了Linux底層的AD736JN信號量函數接口semaphore.c來控制多線程環境中共享資源的計數器。

    信號量是在多線程環境中共享資源的計數器。對信號量的基本操作無非有3個:對信號量的增加;然后阻塞線程等待,直到信號量不為空才返回;對信號量的減少。在編程中,信號量最常用的方式就是一個線程A使用sem_wait阻塞,因為此時信號量計數為O,直到另外一個線程B發出信號post后,信號量計數加1,此時,線程A得到了信號,信號量的計數為1不為空,所就從sem_wait返回,然后信號量的計數又減1變為零。在使用信號量之前,必須對信號量進行初始化。第三個參數通常設置零,初始化信號的計數為0,這樣第一次伎用sem_wait時會因為信號計數為O而等待,直到在其他地方信號量post才返回(除非用戶明白自己在干什么,否則不要將第三個參數設置為大于0的數)。第二個參數是用在進程之間的數據共享標志,如果僅僅使用在當前進程中,設置為0。如果要在多個進程之間使用該信號,設置為非零。但是在Linux線程中,暫時還不支持進程之間的信號共享,所以第二個參數必須設置為0。當信號的計數為零時,sem_wait將休眠掛起當前調用線程,直到信號量計數不為零。在sem_wait返回后信號量計數將自動減1。解除信號量等待限制。讓信號量計數加1,該函數會立即返回不等待。現在sem_post被POSIX所規范,當它改變信號量計數器值時是線程安全的。
    當semjnit失敗時,常見錯誤有:第三個參數value值超過了系統能夠承受的最大值SEM_VALUE_MAX;將第二參數設置為非零,如果是Linux系統,則將第二個參數設置為零。

熱門點擊

 

推薦技術資料

耳機的焊接
    整機電路簡單,用洞洞板搭線比較方便。EM8621實際采... [詳細]
版權所有:51dzw.COM
深圳服務熱線:13692101218  13751165337
粵ICP備09112631號-6(miitbeian.gov.cn)
公網安備44030402000607
深圳市碧威特網絡技術有限公司
付款方式


 復制成功!
台北县| 东阿县| 德江县| 长治市| 辽中县| 林芝县| 蒙山县| 诏安县| 隆昌县| 阿勒泰市| 贵定县| 营口市| 遂溪县| 景洪市| 克拉玛依市| 长春市| 安龙县| 盐边县| 改则县| 上林县| 清丰县| 临沂市| 修武县| 金华市| 车致| 玉树县| 定边县| 彭州市| 安阳市| 青田县| 乌什县| 黄梅县| 裕民县| 瑞昌市| 银川市| 浮梁县| 罗平县| 大宁县| 长乐市| 綦江县| 嘉峪关市|