zoukankan      html  css  js  c++  java
  • Semaphore的理解

     var s:semaphore(:1)

    procedure P(i:integer)

    begin

       repeat

    wait(s)//减1操作

    临界区

    singal(s)//加1操作

    其他操作

    forever

    end

    当第P1访问时首先Wait操作,做-1操作conut为0,不小于0不用进入阻塞队列,进入临界区操作,P2进入时同样-1,count变为-1,小于进入阻塞队列,P3来时count变为-2,当P1使用完临界区时候,做singal操作+1country变为-1,小于0,从阻塞队列中拿出P2进入临界区。队列中还有P3一个进程在阻塞。

    信号量分为:互斥信号量和资源信号量

    互斥信号量常用于申请或释放资源的使用权,常初始化为1.

    资源信号量用于申请或归还资源,可以初始化为大于1的正整数,表示系统中某类资源的可用个数。

    wait操作作用于申请资源,进程执行wait语句时,可能会阻塞自己。

    singal操作用于释放资源,进程执行singal原语时,有责任唤醒另一个进程。

  • 相关阅读:
    3.27上午
    3.24上午 补
    2017.3.27下午
    2017.3.27上午
    2017.3.24下午
    2017.3.24上午
    2017.3.23下午
    2017.3.23上午
    2017.3.22上午
    2017.3.21下午
  • 原文地址:https://www.cnblogs.com/lovezhangyu/p/3403910.html
Copyright © 2011-2022 走看看