2013-07-31 47 views

回答

5

我不這麼認爲。

(1)semephore.count被聲明爲unsigned int。見信號定義:

struct semaphore { 
     spinlock_t  lock; 
     unsigned int  count; 
     struct list_head wait_list; 
    }; 

(2)倒()函數將之前檢查計數值減少它,確保計數不爲負。

除非您實施一種機制,否則不能直接使用信號量來完成您的要求。

+0

謝謝。我正在查看一個較舊的內核,其中的計數是原子-t,但我認爲您仍然適合舊內核 – smoofra

1

計數是無符號的,所以當你認爲你將它設置爲負數時,它實際上是一個非常大的正數。所以不,你不能。

1

這不是一個好主意,因爲它沒有簽名。另外,只有在信號是正數時纔會激活信號量,因此如果將信號量初始化爲負數會產生大量信號量,則會導致信號量允許訪問您希望限制的內容。