Linux中信号量相关接口及环形队列

目录

POSIX信号量

初始化信号量

销毁信号量

等待信号量

发布信号量


POSIX信号量

POSIX信号量和SystemV信号量作用相同,都是用于同步操作,达到无冲突的访问共享资源目的。 但POSIX可以用于 线程间同步。

初始化信号量

#include  
int sem_init(sem_t *sem, int pshared, unsigned int value); 
参数: 
 pshared:0表示线程间共享,非零表示进程间共享 
 value:信号量初始值 

销毁信号量

int sem_destroy(sem_t *sem);

等待信号量

功能:等待信号量,会将信号量的值减1 
int sem_wait(sem_t *sem); //P() 

发布信号量

功能:发布信号量,表示资源使用完毕,可以归还资源了。将信号量值加1。 
int sem_post(sem_t *sem);//V() 

环形队列

Linux中信号量相关接口及环形队列_第1张图片

 在环形队列中,大部分情况下,单生产者和单消费者是可以并发执行的!!!

只有在满或空的时候,才有互斥与同步问题。

为了完成环形队列的cp问题,我们应做的核心工作为???

1.消费者不能超过生产者

2.生产者不能把消费者套一个圈以上

3.生产者与消费者什么时候相遇???

信号量是用来衡量临界资源数量的

1.对于生产者而言,更看重队列中的剩余资源 ->空间作用定义一个信号量

2.对于消费者而言,更看重队列中的数据       -> 数据资源定义一个信号量

你可能感兴趣的:(linux,运维,服务器)