Linux信号量线程控制
来源:互联网 发布:mac日历同步到iphone 编辑:程序博客网 时间:2024/04/29 12:22
线程中互斥锁的使用,达到对共享资源互斥使用。除了使用互斥锁,信号量,也就是操作系统中所提到的PV原语,能达到互斥和同步的效果,这就是今天我们所要讲述的信号量线程控制。
PV原语是对整数计数器信号量sem的操作,一次P操作可使sem减一,而一次V操作可是sem加一。进程(或线程)根据信号量的值来判断是否对公共资源具有访问权限。当信号量的值大于零或等于零的时候,该进程(或线程)具有对公共资源访问的权限,否则,当信号量的值小于时,该进程(或线程)就会被阻塞,直到信号量的值大于或等于一。
1、在LINUX中,实现了POSIX的无名信号量,主要用于线程间的互斥同步,下面将简单介绍一些函数接口:
(1)、sem_init
功能: 用于创建一个信号量,并初始化信号量的值。
头文件: <semaphore.h>
函数原型: int sem_init (sem_t* sem, int pshared, unsigned int value);
函数传入值: sem:信号量。
pshared:决定信号量能否在几个进程间共享。由于目前LINUX还没有实现进
程间共享信息量,所以这个值只能取0。
函数返回值: 0:成功。
-1:失败。
(2)其他函数。
int sem_wait (sem_t* sem);
int sem_trywait (sem_t* sem);
int sem_post (sem_t* sem);
int sem_getvalue (sem_t* sem);
int sem_destroy (sem_t* sem);
功能:sem_wait和sem_trywait相当于P操作,它们都能将信号量的值减一,两者的区别在
于若信号量的值小于零时,sem_wait将会阻塞进程,而sem_trywait则会立即返回。
sem_post相当于V操作,它将信号量的值加一,同时发出唤醒的信号给等待的进程
(或线程)。
sem_getvalue 得到信号量的值。
sem_destroy 摧毁信号量。
函数传入值: sem:信号量。
函数返回值: 同上。
2、函数实现。
- Linux信号量线程控制
- Linux信号量线程控制
- LINUX信号量线程控制例子
- 使用信号量控制Linux线程同步
- 使用信号量控制Linux线程同步
- 信号量线程控制
- SEM 信号量线程控制
- 信号量线程控制
- 信号量线程控制
- linux多线程学习(五)——信号量线程控制
- linux多线程学习(四)——信号量线程控制
- linux多线程学习(五)——信号量线程控制
- linux多线程学习(五)——信号量线程控制
- linux多线程学习(五)——信号量线程控制
- linux多线程学习(五)——信号量线程控制
- linux多线程学习(五)——信号量线程控制
- linux多线程学习(五)——信号量线程控制
- linux 线程 信号量
- Solaris Source Insight: PCI bus driver moduls - npe Part 3
- VB取得线程句柄
- C标准库头文件 assert.h
- 学习
- 很安静
- Linux信号量线程控制
- 基本部分一
- ASP.NET页面对象 - Page
- C#的几条更有效率的写法
- 工作流平台选型要点
- 从塑料瓶底数字看其毒性
- Test
- 创建公司, 真吃苦
- 利用FIREFOX小插件测试小技巧