码迷,mamicode.com
首页 > 其他好文 > 详细

信号量函数

时间:2014-10-17 01:41:03      阅读:382      评论:0      收藏:0      [点我收藏+]

标签:des   os   ar   sp   div   on   bs   har   测试   

信号量函数
int sem_init(sem_t *sem,int pshared,unsigned int value); 
sem_init初始化一个信号量,注意pshared表示允许几个进程共享该信号量,一般设0用于进程内的多线程共享,要看是否支持进程共享,value代表信号灯个数

int sem_destroy(sem_t *sem);
销毁信号量

int sem_wait(sem_t *sem);
线程调用sem_wait取获取这个信号灯,第一个线程一看,有1个,他就拿到了,然后可以继续后继操作,此时信号灯自动减1,变成0个。那么第二个线程调用sem_wait时就会阻塞

int sem_trywait(sem_t *sem);
sem_trywait ,就是测试一下看看现在有没有可用的信号灯,而不会阻塞。

int sem_post(sem_t *sem);
第一个线程完成打印后,调用sem_post释放信号灯,信号灯数目变成1,将会唤醒等待的第二个线程,然后第二个线程接着打印。
最后当所有任务完成后,主线程调用sem_destroy释放这个信号量。

int sem_getvalue(sem_t *sem) 就是读取当前的信号灯的数目
 
int sem_timedwait(sem_t *sem,const struct timespec *abs_timeout) 防止占有信号量后挂死,定时设置post该信号量

信号量函数

标签:des   os   ar   sp   div   on   bs   har   测试   

原文地址:http://www.cnblogs.com/kangbry/p/4029836.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!