POSIX信号量和SystemV信号量作⽤相同,都是⽤于同步操作,达到⽆冲突的访问共享资源目的。 但POSIX可以⽤于线程间同步。
信号量本质上是一个计数器,这个计数器是用来描述临界资源当中资源数目的。信号量本身也会被多个线程申请,所以信号量本身也是临界资源,那么它要保护临界资源就要保证自己本身是安全的,所以信号量是原子性的。因此信号量不能用整形计数器来代替,因为整形的++和- -操作不是原子的。
只要你申请到信号量之后,必然在临界资源里有一块空间给你留着。
int sem_destroy(sem_t *sem);
功能:等待信号量,会将信号量的值减1
int sem_wait(sem_t *sem);
功能:发布信号量,表⽰资源使⽤完毕,可以归还资源了。将信号量值加1。
int sem_post(sem_t *sem);
应用信号量实现一个基于环形队列的生产者消费者模型:
https:///ETalien_/article/details/86566945
因篇幅问题不能全部显示,请点此查看更多更全内容