1、求教 信號量控制semctl 總是失敗 返回值
返回值:0,如果成功。-1,如果失敗:errno=E2BIG(這也就是進程釋放信號量控制的資源。最後,如果sem_還比如: Semget(),semctl() 等。如有需要解釋這些
2、(計算機操作系統)wait操作和signal操作什麼意思?
wait操作和signal操作是計算機操作系統中進程式控制制的信號量機制的概念。
在進程式控制制中如何合理對共享資源分配便是一個關鍵的問題,所以引入了信號量的這個概念,通過pv操作便可以達到對空閑共享資源的合理分配。
一、信號量(semaphore)的數據結構為一個值和一個指針,指針指向等待該信號量的下一個進程。信號量的值與相應資源的使用情況有關。
1)、當它的值大於0時,表示當前可用資源的數量;
2)、當它的值小於0時,其絕對值表示等待使用該資源的進程個數。
二、PV操作,只有通過pv操作才可以改變信號量的值。
1)、p操作(wait):申請一個單位資源,進程進入。簡而言之就是信號量減一。
2)、v操作(signal):釋放一個單位資源,進程出來。簡而言之就是信號量加一。
(2)semtrywait返回值擴展資料
信號量分類
1、整型信號量
最初Dijkstra把整型信號量定義為一個用於表示資源數目的整型量S,它與一般的整型量不同,除初始化外,僅能通過兩個標准原子操作(Atomic Operation)wait(S)和signal(S)操作。
2、記錄型信號量
在整型信號量機制中的wait操作,只要是信號量S<=0,就會不斷測試。因此,該機制並未遵循「讓權等待」准則,而是使進程處於「忙等」狀態。記錄型信號量機制則是一種不存在「忙等」現象的進程同步機制。
3、AND型信號量
在一些應用場合,是一個進程需要先獲得兩個或者更多的共享資源後方能執行其任務。假定現在有兩個進程A和B,他們都要求訪問共享數據D和E。當然,共享數據都應該作為臨界資源。為此,可為這兩個數據分別設置用於互斥的信號量Dmutex和Emutex。
4、信號量集
在記錄型信號量機制中,wait(S)或signal(S)操作僅能對信號量施以加1或者減1操作,意味著每次只能獲得或釋放一個單位的臨界資源。而當一次需要N個某類臨界資源時,便要進行N次wait(S)操作,顯然這是低效的。此外,在有些情況下,當資源數量低於某一下限值時,便不予分配。
3、sem_trywait的內容簡介
<
4、WaitForSingleObject怎麼使用,想用它在windows環境下實現類似linux下的sem_wait功能。
#