Linux:POSIX信號量

POSIX信號量

POSIX信號量和SystemV信號量作⽤相同,都是⽤於同步操作,達到⽆衝突的訪問共享資源目的。 但POSIX可以⽤於線程間同步。

信號量本質上是一個計數器,這個計數器是用來描述臨界資源當中資源數目的。信號量本身也會被多個線程申請,所以信號量本身也是臨界資源,那麼它要保護臨界資源就要保證自己本身是安全的,所以信號量是原子性的。因此信號量不能用整形計數器來代替,因爲整形的++和- -操作不是原子的。

只要你申請到信號量之後,必然在臨界資源裏有一塊空間給你留着。

POSIX信號量的使用

初始化信號量(sem_init)
#include <semaphore.h>
int sem_init(sem_t *sem, int pshared, unsigned int value);

參數:
sem: 要初始化的信號量
pshared: 0表⽰線程間共享,⾮零表⽰進程間共享
value: 信號量初始值

銷燬信號量(sem_destroy)
int sem_destroy(sem_t *sem);
等待信號量(sem_wait)(P操作)- -

功能:等待信號量,會將信號量的值減1

int sem_wait(sem_t *sem);
發佈信號量(sem_post)(V操作)+ +

功能:發佈信號量,表⽰資源使⽤完畢,可以歸還資源了。將信號量值加1。

int sem_post(sem_t *sem);

應用信號量實現一個基於環形隊列的生產者消費者模型:
https://blog.csdn.net/ETalien_/article/details/86566945

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章