信号量
来源:互联网 发布:易企秀mac官网下载 编辑:程序博客网 时间:2024/05/29 10:51
以下笔记摘自《linux设备驱动开发详解》
信号量的描述:
信号量是操作系统最典型的用于同步和互斥的手段,一个信号量是可以给它赋值的,且它的值可为0、1或n,信号量与操作系统中的经典概念PV操作相对应:
P(S):将信号量的值减一,即S=S-1;如果S>=0该进程继续执行,否则该进程置为等待状态,排入等待队列
V(S):将信号量的值加一,即S=S+1;如果S>0,唤醒等待队列中等待的进程
信号量的操作:
1、定义
struct semaphore sem;
2、初始化
void sem_init(struct semaphore *sem,int val);
3、获取
void down(struct semaphore *sem);用于获取信号量,会导致休眠,因此不能在中断上下文中使用
void down_trylock(struct semaphore *sem)如果能获得该信号量返回0,否则返回非0,不会导致进程休眠,可在中断上下文中使用
4、释放
void up(struct semaphore *sem);
作为一种可能的互斥手段,信号量可以保护临界区,它的使用方式与自旋锁类似,与自旋锁的相同点:
获得信号量的进程才能执行临界区的代码,不同的:当获取不到信号量时,进程不会原地打转而是进入休眠等待
阅读全文
0 0
- 信号量
- 信号量
- 信号量
- 信号量
- 信号量
- 信号量
- 信号量
- 信号量
- 信号量
- 信号量
- 信号量
- 信号量
- 信号量
- 信号量
- 信号量
- <>信号量
- 信号量
- 信号量
- 打印出现的问题
- SOAP webserivce 和 RESTful webservice 对比及区别
- 搜罗一切webpack的好文章好工具
- 判断两线段是否相交
- java 之匿名内部类用法案例
- 信号量
- java计算两个字符串日期相差的天数
- Windows 2008服务器环境PHP连接SQL Server数据库的配置及连接方法
- ubuntu16.04安装flash player
- TCP状态转换图
- 代码来解决多进程/线程同时读写一个文件的问题。
- nyoj1011——So Easy[II]
- c++入门教程(填坑2)
- JDBC,java数据库连接java database connectivity