這是對由sem指定的訊號量進行初始化,設定好它的共享選項(linux 只支援為0,即表示它是當前程序的區域性訊號量),然後給它乙個初始值value。
int sem_init (sem_t *sem , int pshared, unsigned int value);
給訊號量減1,然後等待直到訊號量的值大於0。
int sem_wait(sem_t *sem);
訊號量值加1。並通知其他等待執行緒。
int sem_post(sem_t *sem);
我們用完訊號量後都它進行清理。歸還占有的一切資源。
int sem_destroy(sem_t *sem);
#include #include #include #include #include #include #define return_if_fail(p) if((p) == 0)
typedef struct _privinfo
privinfo;
static void info_init (privinfo* thiz);
static void info_destroy (privinfo* thiz);
static void* pthread_func_1 (privinfo* thiz);
static void* pthread_func_2 (privinfo* thiz);
int main (int argc, char** ar**)
info_init (thiz);
ret = pthread_create (&pt_1, null, (void*)pthread_func_1, thiz);
if (ret != 0)
ret = pthread_create (&pt_2, null, (void*)pthread_func_2, thiz);
if (ret != 0)
pthread_join (pt_1, null);
pthread_join (pt_2, null);
info_destroy (thiz);
return 0;
} static void info_init (privinfo* thiz)
static void info_destroy (privinfo* thiz)
static void* pthread_func_1 (privinfo* thiz)
return;
} static void* pthread_func_2 (privinfo* thiz)
return;
}
C 多執行緒程式設計訊號量 五
c 多執行緒程式設計訊號量 用訊號量實現的執行緒安全佇列。include stdafx.h include include define boundary 5 定義邊界 int tasks 10 任務量 pthread mutex t tasks mutex 互斥鎖 條件訊號變數,處理兩個執行緒間的...
Linux多執行緒程式設計 訊號量
1.1訊號量簡介 linux下主要分為兩種訊號量,system v和posix訊號量,posix訊號量又分為無名訊號量和有名訊號量,這裡我們只分享無名訊號量這裡我們主要研究posix訊號量。訊號量是同步的一種方式,常常用於對共享資源的訪問,舉乙個常見的例子,假如乙個停車場有100個停車位,我們將車停...
多執行緒 訊號量
訊號量 semaphore類 建立帶指定許可數的訊號量 semaphore semaphore new semaphore 1 建立乙個許可的訊號量 訊號量用來限制訪問共享數資源的執行緒數。在訪問資源之前,執行緒必須從訊號量獲取許可,在訪問完資源後釋放訊號量。任務通過呼叫訊號量的acquire 方法...