首页 > 其他 > 详细

pv操作与信号量

时间:2018-03-16 17:54:36      阅读:180      评论:0      收藏:0      [点我收藏+]

  在python同步编程部分,需要分析和思考多个线程之间同步互斥问题,因此pv操作和信号量作为基础和重中之重,特此回顾pv操作和信号量。

  PV操作由P操作原语和V操作原语组成(原语即不可在分割的操作),对信号量(大部分是cpu等资源)进行操作,具体定义如下:

    P(S):

      ①将信号量S的值减1,即S=S-1;

      ②如果S>=0,则该进程继续执行;否则该进程置为等待状态。

    V(S):

      ①将信号量S的值加1,即S=S+1;

      ②该进程继续执行;如果该信号的等待队列中有等待进程就唤醒一等待进程。

p操作就是对s(信号量)进行操作,p操作占用一个资源(s=s-1),空闲信号量减一,此时s>=0说明刚才资源足以满足线程需求,线程运行,否则挂起。

v操作是线程完成之后释放资源,此时(s=s+1),此时空闲资源数量+1,若此时资源满足挂起队列线程需要,则新线程运行。

  

  关于PV操作的总结:

    1.在多线程编程中使用PV操作能忽略代码具体的实现细节,这样确保总体思路的正确性。

    2.分析PV操作时紧紧抓住同步和互斥;

       同步主要分析:谁在等待?等待什么?分析清楚了,同步就出来了;

       互斥主要分析:那些资源是共享的,共享资源需进一步思考有没有必要互斥,比如果盘问题中果盘是共享资源,但是果盘操作并不需要互斥;

pv操作与信号量

原文:https://www.cnblogs.com/chenjie2018/p/8583691.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!