文章目录
一、信号量简介
在对于临界区资源管理的过程中,多个程序同时访问一个共享资源经常容易引发一系列问题:如死锁,结果不唯一等等。
信号量是一种特殊的变量,它只能取自然数值并且只支持两种操作:等待§和信号(V).假设有信号量SV,对其的P、V操作如下:
P,如果SV的值大于0,则将其减一;若SV的值为0,则挂起执行
V,如果有其他进行因为等待SV而挂起,则唤醒;若没有,则将SV值加一
linux sem 信号量是一种特殊的变量,访问具有原子性, 用于解决进程或线程间共享资源引发的同步问题。
二、相关函数
#include <semaphore.h>
// 信号量的创建
sem_t sem;
// 初始化一个未命名的信号量
int sem_init(sem_t *sem, int pshared, unsigned int value);
// 销毁信号量
int sem_destroy(sem_t *sem)