zoukankan      html  css  js  c++  java
  • 同步异步复习和新内容锁,信号,时间机制

    课程回顾:

      并行:  两个进程在同一时间点发生

      并发:  两个进程在同一时间间隔内运行

      同步:  某一个任务的执行必须依赖另一个任务的返回值

      异步:  某一个任务的执行,不需要依赖于另一个任务的返回,只需要告诉另一个任务一声

      阻塞:  程序因为类似于IO等待,等待事件等导致无法继续执行

      非阻塞:  程序遇到类似于IO操作时,不在阻塞等待,如果没有及时的处理IO,就报错或者跳过等其他操作

    进程的方法和属性:

      方法:   start()  开启一个子进程

          join  异步变同步,让父进程等待子进程的执行结束,再继续执行

          is_alive  判断进程是否还活着

          terminate  杀死进程

      属性:

          name  子进程的名字

          pid    子进程的pid

          daemon  设置进程为守护进程,给一个True代表为守护进程,默认为False

    守护进程:

        特点:

          随着父进程的代码执行完毕才结束

          守护进程不能创建子进程

          守护进程必须要在start之前设置

    IPC  --  inter  process  Communication   进程之间通信

    今天内容:  

      学习锁机制

        l=Lock()

        一把钥匙配一把锁

         拿钥匙,开门  l.acquire()

         还钥匙,锁门  l.release()

      学习信号机制

        sem = Semaphore(n)

        n:是指初始化一把锁配几把钥匙,一个int型

        拿钥匙,锁门  l.acquire()

        换钥匙,开门  l.release()

        信号量机制比锁机制多了一个计数器,这个计数器是用来记录当前剩余几把钥匙

        当计数器为0时,表示没有钥匙了,此时acquire()处于阻塞

        对于计数器来说,没acquire一次,计数器内部就减1,release()一次,计数器就加1

     

      学习事件机制

        e = Event()

        e.set()  #将is_set()设为True

        e.clear()  #将is_set设为False  

        e.wait()   #判断is_set的值,如果bool为True,则非阻塞,bool值为False,则阻塞

        e.is_set   #标识

        事件是通过is_set()的bool值,去标识e.wait()的阻塞状态

        当is_set()的bool值为False时,e.wait()是阻塞状态

        当is_set()的bool值为True时,e.wait()时非阻塞状态

        当使用set()时,是把is_set的bool变为True

        当使用clear()时,是吧is_set的bool变为 False

  • 相关阅读:
    图片轮显效果大全
    firefox 对WebRTC支持
    Android AES加密算法及事实上现
    怎样以学习单片机为契机,逐步成为优秀的project师
    HTML中Select的使用具体解释
    POJ 3602 Typographical Ligatures
    远程控制编写之屏幕传输 MFC实现 屏幕截图 发送bmp数据 显示bmp图像
    blend
    POJ3187 Backward Digit Sums
    牛腩公布系统--HTTP 错误 403.14
  • 原文地址:https://www.cnblogs.com/jerry-hou/p/11973245.html
Copyright © 2011-2022 走看看