posix訊號量
sem_t
sem_init()
int sem_init(sem_t *sem, int pshared, unsigned int value);
引數:pshared:0表⽰示執行緒間共享,⾮非零表⽰示程序間共享 value:訊號量初始值
sem_wait() 條件不滿足,等待
sem_post() 通知
sem_destroy()
#include
#include
#include
#include
#include
sem_t producer;//notify producer
sem_t consumer;//notify consumer
int noodles = 1;
void *thr_producer(void *arg)
return
null;
}void *thr_consumer(void *arg)
return
null;
}int main()
多應用於讀多寫少的情景
寫獨佔,讀共享,寫鎖優先順序高
建立乙個讀寫鎖:pthread_rwlock_t rwlock;
初始化讀寫鎖:pthread_rwlock_init(&rwlock,null);
加鎖:
- pthread_rwlock_wrlock(&rwlock);
- pthread_rwlock_rdlock(&rwlock);
解鎖:pthread_rwlock_unlock(&rwlock);
銷毀:pthread_rwlock_destroy(&rwlock);
#include
#include
#include
#include
#include
char *ptr = "i am blackboard";
pthread_rwlock_t rwlock;
void *thr_write(void *arg)
return
null;
}void *thr_read(void *arg)
return
null;
}int main()
linux Posix 訊號量 二
一 posix訊號量 1.posix訊號量分為兩種 1.有名訊號量 使用posix ipc名字標識 有名訊號量總是既可用於執行緒間的同步,又可以用於程序間的同步 2.記憶體訊號量 存放在共享記憶體區中 基於記憶體的訊號量則必須在建立時指定成是否在程序間共享,且在所有程序的共享記憶體區,具有隨程序的持...
訊號量實現讀寫鎖
一般的讀寫鎖 一般的讀寫鎖都是一開始對鎖分配max resource個資源,其中寫操作的時候會一次性占用 max resource個資源,而讀操作的時候就只會占用乙個資源。這樣子會出現乙個問題就是 如果在當前資源的數目不為max resource的時候,那麼總是不能進行寫操作,只能是進行 讀操作,如...
讀寫訊號量(todo)
讀寫訊號量的相關api有 declare rwsem name 該巨集宣告乙個讀寫訊號量name並對其進行初始化。void init rwsem struct rw semaphore sem 該函式對讀寫訊號量sem進行初始化。void down read struct rw semaphore ...