struct sembuf的部分講解

2021-08-07 19:46:40 字數 1121 閱讀 4807

sembuf結構體的定義如下:

[cpp]view plain

copy

struct

sembuf  

;  

sem_num標識訊號量集中的第幾個訊號量,0

表示第1個,1

表示第2

個,nsems - 1

表示最後乙個。

sem_op標識對訊號量的所進行的操作型別。對訊號量的操作有三種型別:

sem_flag:訊號量操作的屬性標誌,如果為0

,表示正常操作,如果為

ipc_wait

,使對訊號量的操作時非阻塞的。即指定了該標誌,呼叫執行緒在訊號量的值不滿足條件的情況下不會被阻塞,而是直接返回

-1,並將

errno

設定為eagain

。如果為

sem_undo

,那麼將維護程序對訊號量的調整值,以便程序結束時恢復訊號量的狀態。

下面解釋一下與單個訊號量相關的幾個值:

semval

semncnt:等待

semval

變為大於當前值的執行緒數。在文章開頭訊號量的結構中已提到。

semzcnt:等待

semval變為0

的執行緒數。在文章開頭訊號量的結構中已提到。

semadj:指定訊號量針對某個特定程序的調整值。只有

sembuf

結構的sem_flag

指定為sem_undo

後,semadj

才會隨著

sem_op

而更新。

講簡單一點:對某個程序,在指定sem_undo

後,對訊號量

semval

值的修改都會反應到

semadj

上,當該程序終止的時候,核心會根據

semadj

的值,重新恢復訊號量之前的值。

jQuery的部分總結

jquery選擇器返回的物件是jquery物件。jquery物件是乙個封裝了陣列的物件,只不過多了一些屬性。對於jquery物件如果直接操作屬性,那麼只能運算元組中第乙個元素,如果想運算元組中其它元素,則可以通過下標或者get i 方式取出來。不過這時候它已經不是jquery物件,而是dom元素。因...

部分常用的方法

public class numbertest public static void containone int i else public static string revicestr string str return arr.tostring public static void coun...

新書缺的部分

這就是我為了來這裡而丟下的工作,這位聖人說,還有 我放棄的生活。他以前開的是觀光巴士。聖無腸在舞台上,兩臂交在胸前 好瘦他的兩手都能摸到自己背部的正中間 聖無腸站在那裡,只有一層皮 畫在他的骨架子上。鎖骨由胸口突出,大得如同 把手。肋骨在白色t 恤下清晰可見,而皮帶 不是他的屁股 讓藍色牛仔褲不掉下...