Linux 多线程信号量同步
PV原子操作
P操作:
- 如果有可用的资源(信号量值>0),则此操作所在的进程占用一个资源(此时信号量值减1,进入临界区代码);
- 如果没有可用的资源(信号量值=0),则此操作所在的进程被阻塞直到系统将资源分配给该进程(进入等待队列,一直等到资源轮到该进程)。
V操作:
- 如果在该信号量的等待队列中有进程在等待资源,则唤醒一个阻塞进程;如果没有进程等待它,则释放一个资源(即信号量值加1)。
信号量模型
- 定义信号量 sem_t sem
- 初始化信号量 sem_init()
- 获取信号量,信号量的数值-1 sem_wait();
- 访问共享资源
- 释放一个信号量,及信号量的数值+1 sem_post();
- 如果不再使用信号量,则销毁信号量 sem_destroy()
例子
相关推荐
  archimedes    2020-11-05  
   hackerlpy    2020-09-25  
   神龙    2020-06-07  
   安得情怀似旧时    2020-04-20  
   RayCongLiang    2019-12-29  
   wanggongzhen    2020-01-09  
   Attend    2010-09-04  
   goawalk    2011-03-24  
   insularisland    2019-11-05  
   shipinsky    2019-11-05  
   GeorgeTH    2019-10-29  
   Proudoffaith    2019-10-28  
   过儿古墓    2011-05-26  
   hehuistudent    2008-09-11  
   kuailexiaochuan    2015-04-11  
   qiaosym    2012-03-29  
   playlinuxxx    2016-07-30  
   pointfish    2011-08-23  
   zjhqlmzldx    2011-06-02  
 