Linux Posix訊號量 讀寫鎖

2021-08-21 20:43:06 字數 1227 閱讀 4689

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 ...