关于信号量
来源:互联网 发布:minitab软件免费下载 编辑:程序博客网 时间:2024/06/05 08:57
1、信号量的定义:
struct semaphore {
};
在linux中,信号量用上述结构体表示,我们可以通过该结构体定义一个信号量。
2、信号量的初始化:
可用void sema_init(struct semaphore *sem, int val);直接创建,其中val为信号量初值。
也可以用两个宏来定义和初始化信号量的值为1或0:
DECLARE_MUTEX(name) : 定义信号量name并初始化为1
DECLARE_MUTEX_LOCKED(name) : 定义信号量name并初始化为0
还可以用下面的函数初始化:
void init_MUTEX(struct semaphore *sem); //初始化信号量的值为1
void init_MUTEX_LOCKED(struct semaphore *sem); //初始化信号量的值为0
3、信号量的原子操作:
p操作:
* void down(struct semaphore *sem); //用来获取信号量,如果信号量值大于或等于0,获取信号量,否则进入睡眠状态,睡眠状态不可唤醒
* void down_interruptible(struct semephore *sem); //用来获取信号量,如果信号量大于或等于0,获取信号量,否则进入睡眠状态,等待信号量被释放后,激活该程。
* void down_trylock(struct semaphore *sem); //试图获取信号量,如果信号量已被其他进程获取,则立刻返回非零值,调用者不会睡眠
v操作:
* void up(struct semaphore *sem); //释放信号量,并唤醒等待该资源进程队列的第一个进程
int down_interruptible(struct semaphore *sem)
这个函数的功能就是获得信号量,如果得不到信号量就睡眠,此时没有信号打断,那么进入睡眠。但是在睡眠过程中可能被信号打断,打断之后返回-EINTR,主要用来进程间的互斥同步。- 关于信号量
- 关于信号量
- 关于信号量
- 关于信号量的学习
- 关于二进制信号量
- 关于互斥锁与信号量
- 关于semaphore(信号量)
- 关于信号量sem
- 关于Posix的信号量
- 关于System V 信号量
- 关于Java 信号量 Semaphore
- 关于GCD信号量dispatch_semaphore_signal
- 关于信号量的使用总结
- 关于信号量的初次尝试
- 关于sem_unlink什么时候删除信号量
- ucos关于互斥信号量
- 关于信号量的作用范围
- 【swoole】关于信号量的总结
- python开发之图片转字符画
- 浅析为什么char类型的范围是 —128~+127
- 随笔
- 抓包分析工具
- OJ刷题之《计算题》
- 关于信号量
- leetcode Longest Substring Without Repeating Characters
- LEETCODE: Remove Duplicates from Sorted List II
- MyEclipse10 不停的 Validating...
- linux ubuntu 下 crystalanalysis 的安装步骤
- 判断100到200间的素数的算法+优化~
- linux ubuntu 下 phonopy 的安装步骤
- [UVA12230] Crossing Rivers && 数学期望
- 文本数据交换格式:JSON