POSIX信号量和SystemV信号量作用相同,都是用于同步操作,达到无冲突的访问共享资源的目的。但是POSIX信号量可以用于线程同步。(信号量本身是一个临界资源)
初始化信号量:
#include<semaphore.h>
int sem_init(sem_t *sem,int pshared,unsigned int value);
参数:
- sem:需要的信号量。
- pshared:是否需要共享,默认值为0表示线程间共享,
- value:信号量的初始值。(信号量的本质就是一个计数器,一个count)
销毁信号量:
int sem_destroy(sem_t *sem);
等待信号量:
int sem_wait(sem_t *sem);
功能:等待信号量,会将信号量减一。(P操作)
发布信号量:
int sem_post(sem_t *sem);
功能:发布信号量,表示资源使用完毕,可以归还资源。信号量值加一。(V操作)