OS - 并发与竞争
Linux 旗标实现 <asm/semaphore.h> 在头文件中,struct semaphore
有几种初始化旗标的方法
第一种,直接创建一个旗标,接着使用sema_init 来设定它
void sema_init(struct semaphore *sem, int val);
val 是安排给旗标的初始值。
第二种, 以互斥锁的模式使用。
DELCARE_MUTEX(name); 将name置1
DECLARE_MUTEX_LOCKED(name); 将name置0
name 为旗标变量
第三种,如果互斥锁必须在运行时间初始化,使用下列中的一个
void init_MUTEX(struct semaphore *sem); void init_MUTEX_LOCKED(struct semaphore *sem);
在Linux中,P函数称为down -- down指函数递减旗标的值,有3个版本的down
void down(struct semaphore *sem); int down_interruptible(struct semaphore *sem); int down_trylock(struct semaphore *sem);
V的Linux对应物是up
void up(struct semaphore *sem);

浙公网安备 33010602011771号