码迷,mamicode.com
首页 > 其他好文 > 详细

pv操作与信号量

时间:2018-03-16 18:37:54      阅读:152      评论:0      收藏:0      [点我收藏+]

标签:资源   完成   共享   信号   pytho   操作   共享资源   不可   class   

  在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操作与信号量

标签:资源   完成   共享   信号   pytho   操作   共享资源   不可   class   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!