线程-信号量
来源:互联网 发布:淘宝店铺如何设置会员 编辑:程序博客网 时间:2024/06/08 16:48
信号量本质上是一个非负的整数计数器,它被用来控制对公共资源的访问。当公共资源增加时,调用函数sem_post()增加信号量。只有当信号量值大于0时,才能使用公共资源,使用后,函数sem_wait()减少信号量。函数sem_trywait()和函数pthread_ mutex_trylock()起同样的作用,它是函数sem_wait()的非阻塞版本。
/usr/include/semaphore.h
sem_t:信号量数据结构
int sem_init ((sem_t*__sem, int __pshared, unsigned int __value));初始化一个信号量, sem为指向信号量结构的一个指针;pshared不为0时此信号量在进程间共享,否则只能为当前进程的所有线程共享;value给出了信号量的初始值。
sem_post( sem_t *sem )用来增加信号量的值。当有线程阻塞在这个信号量上时,调用这个函数会使其中的一个线程不在阻塞,选择机制同样是由线程的调度策略决定的。
sem_wait( sem_t *sem )被用来阻塞当前线程直到信号量sem的值大于0,解除阻塞后将sem的值减一,表明公共资源经使用后减少。函数sem_trywait( sem_t *sem )是函数sem_wait()的非阻塞版本,它直接将信号量sem的值减一。
int size=0;
int count = 0;
sem_t sem;
void main(){/*主线程读操作*/
sem_init(&sem, size,0);
while(1){
sem_wait(&sem);
read(count);
size--;
}
}
void wirter(){
wirte(count);
size++;
sem_post(&sem);
}
- 线程 信号量
- 线程-信号量
- 线程信号量
- Linux信号量线程控制
- 信号量和线程互斥锁
- JAVA 线程 同步 信号量
- 线程与信号量
- JAVA 线程 同步 信号量
- 线程信号量同步
- 线程同步之信号量
- 线程同步-信号量
- 线程同步----信号量(Semaphore)
- 线程:信号量 sem_wait sem_post
- linux 线程 信号量
- Linux信号量线程控制
- 线程与信号量
- 信号量线程控制
- 线程的同步--信号量
- Windows性能计数器分析
- 第十篇 实战rman恢复(2)恢复到异机--转自君三思
- Dim Temp%的意思
- JSP+Servlet复习
- Ext下拉框图片+文字
- 线程-信号量
- 梯度下降算法步长和收敛条件的设置的一些看法
- UCOS2:对于信号量,互斥信号量,事件标志组的个人理解
- STM32学习笔记(2):外部中断的使用
- 第十一篇 RMAN笔记之综述
- STM32学习笔记(3):系统时钟和SysTick定时器
- Sql Server 2008 登录解决
- 如何在Excel中仅复制可见单元格
- LightOj 1054 Efficient Pseudo Code