🐶博主主页:@ᰔᩚ. 一怀明月ꦿ
❤️🔥专栏系列:线性代数,C初学者入门训练,题解C,C的使用文章,「初学」C++,linux
🔥座右铭:“不要等到什么都没有了,才下定决心去做”
🚀🚀🚀大家觉不错的话,就恳求大家点点关注,点点小爱心,指点指点🚀🚀🚀
目录
信号量
1)信号量本质就是一把计数器
2)申请信号量本质就是预订资源
3)PV操作是原子的
PV操作是信号量的基本操作,用于对信号量的值进行增加(V操作)和减少(P操作)
快速认识信号量的接口
头文件:#include<semaphore.h>
sem_init
在Linux中,sem_init 函数用于初始化一个未命名的信号量。
其函数声明如下:
int sem_init(sem_t *sem, int pshared, unsigned int value); * sem:指向要初始化的信号量的指针。 * pshared:指定信号量是在进程间共享(非0)还是在当前进程内共享(0)。 * value:指定信号量的初始值。
sem_destroy
sem_destroy 函数用于销毁一个未命名的信号量。
其函数声明如下:
int sem_destroy(sem_t *sem);
sem_wait
在Linux中,sem_wait 函数用于执行一个P操作,即等待(wait)信号量的值减少。
其函数声明如下:
int sem_wait(sem_t *sem); * sem:指向要操作的信号量的指针。 当调用 sem_wait 函数时,它会尝试减少信号量的值。如果信号量的值大于0, 则将其减少;如果信号量的值已经为0,则该操作将被阻塞,直到信号量的值不为0。 一旦成功执行了P操作ÿ