Linux之信号量,比较全面,个人总结。..docVIP

  • 5
  • 0
  • 约1.43万字
  • 约 18页
  • 2017-02-01 发布于重庆
  • 举报
信号量 一.什么是信号量 信号量的使用主要是用来保护共享资源,使得资源在一个时刻只有一个进程(线程)所拥有。 信号量的值为正的时候,说明它空闲。所测试的线程可以锁定而使用它。若为0,说明它被占用,测试的线程要进入睡眠队列中,等待被唤醒。 二.信号量的分类 在学习信号量之前,我们必须先知道——Linux提供两种信号量: 内核信号量,由内核控制路径使用 用户态进程使用的信号量,这种信号量又分为POSIX信号量和SYSTEM V信号量。 POSIX信号量又分为有名信号量和无名信号量。 有名信号量,其值保存在文件中 所以它可以用于线程也可以用于进程间的同步名信号量,其值保存在中struct semaphore {    atomic_t count;    int sleepers;    wait_queue_head_t wait;   }void sema_init (struct semaphore *sem, int val); void init_MUTEX (struct semaphore *sem); //将sem的值置为1,表示资源空闲 void init_MUTEX_LOCKED (struct semaphore *sem); //将sem的值置为0,表示资源忙 (2)申请内核信号量所保

文档评论(0)

1亿VIP精品文档

相关文档