sem_post

sem_post是給信號量的值加上一個“1”,它是一個“原子操作”---即同時對同一個信號量做加“1”操作的兩個執行緒是不會衝突的;而同 時對同一個檔案進行讀和寫操作的兩個程式就有可能會引起衝突。

頭檔案,函式原型,說明,返回值,錯誤,

頭檔案

#include <semaphore.h>

函式原型

int sem_post(sem_t *sem);

說明

sem_post函式的作用是給信號量的值加上一個“1”,它是一個“原子操作”---即同時對同一個信號量做加“1”操作的兩個執行緒是不會衝突的;而同 時對同一個檔案進行讀、加和寫操作的兩個程式就有可能會引起衝突。信號量的值永遠會正確地加一個“2”--因為有兩個執行緒試圖改變它。 當有執行緒阻塞在這個信號量上時,調用這個函式會使其中一個執行緒不在阻塞,選擇機制是有執行緒的調度策略決定的。

返回值

sem_post() 成功時返回 0;錯誤時,信號量的值沒有更改,-1 被返回,並設定 errno 來指明錯誤。

錯誤

EINVAL
sem 不是一個有效的信號量
EOVERFLOW
信號量允許的最大值將要被超過。

相關詞條

熱門詞條

聯絡我們