zoukankan      html  css  js  c++  java
  • day 33 线程学习之线程进程效率对比. 锁. 信号量 . 事件

    一  . 线程

       线程是cpu最小的执行单位,是能独立运行的基本单位,进程是资源分配的最小单位。且:每个进程中最小有一个线程

      线程与进程的区别:

      1)地址空间和其它资源(如打开文件):进程间相互独立,同一进程的各线程间共享。某进程内的线程在其它进程不可见。

      2)通信:进程间通信IPC,线程间可以直接读写进程数据段(如全局变量)来进行通信——需要进程同步和互斥手段的辅助,以保证数据的一致性。(就类似进程中的锁的作用)
      3)调度和切换:线程上下文切换比进程上下文切换要快得多。
      4)在多线程操作系统中(现在咱们用的系统基本都是多线程的操作系统),进程不是一个可执行的实体,真正去执行程序的不是进程,是线程,你可以理解进程就是一个线程的容器。

      线程的特点:(1)轻型实体(2)独立调度和分派的基本单位 (3)共享进程资源(4)可并发执行

      线程跟进程一样,都是互相充满 ‘敌意’ 的,彼此抢占资源,彼此占cpu。

    二 . 线程的两种创建方式

    (1)   from  threading import Thread

      def func( )

      pass

      t = Thread(target = func,args = ())

      t.start()

    (2)   class MyThread(Thread):

        def __init__(self,n):

          super().__init()

          self.n = n

        def  run(self):

           pass

      t = MyThead(12)

    三 . 线程与进程效率的对比 ,join方法

      线程比进程的效率要快很多,进程的运行还需要电脑的配置,cpu的运行速度,线程的话是不需要的,所以,开启一个线程的时间是远小于进程的。

    四 . 同线程之间是数据共享的

      同一进程与线程之间是数据共享的,多个线程之间有数据栈,数据不共享的,全局变量在多个线程之间数据是

    共享的,进程也一样。

    五 . 锁(互斥锁同步锁)

      Look,解决数据共享时数据不安全的问题,但是同时牺牲了效率。

      开始锁:lock.acquire()

      关闭锁:lock.release()  只能有一个锁

    六 . 死锁现象

      双方互相等待对方释放对方手里拿到的那个锁

        一样的,也是只能有一个锁,你在用,别人就不能用,就跟上厕所是一样的,别人在上这个厕所,你只能等。

    七 . 递归锁 :Rlock

      A = B = Rlock   创建同等条件

      同样是互斥的,里面存着个计数器,只有等锁计数为0的时候,才能将锁传递给下一位追梦者。

    八 . 守护进程

      线程的守护进程跟进程的守护进程不太一样,

      守护线程:主线程等着进程中所有非守护线程的结束,才算结束。

      守护进程:主进程代码结束,守护进程也跟着结束。

    九 . 信号量:大宝剑原理

      四个位置十个人,一次只能进去四个人,也就是每个代码的时间不同,进出的时间也不同,是不规律的,又快也有慢。

    十 . 事件

       e = Event

      线程的事件跟进程的事件是一样的

      

    event.isSet():返回event的状态值;
    event.wait():如果 event.isSet()==False将阻塞线程;
    event.set(): 设置event的状态值为True,所有阻塞池的线程激活进入就绪状态, 等待操作系统调度;
    event.clear():恢复event的状态值为False。

      

  • 相关阅读:
    【codecombat】 试玩全攻略 第二章 边远地区的森林 一步错
    【codecombat】 试玩全攻略 第十八关 最后的kithman族
    【codecombat】 试玩全攻略 第二章 边远地区的森林 woodlang cubbies
    【codecombat】 试玩全攻略 第二章 边远地区的森林 羊肠小道
    【codecombat】 试玩全攻略 第十七关 混乱的梦境
    【codecombat】 试玩全攻略 第二章 边远地区的森林 林中的死亡回避
    【codecombat】 试玩全攻略 特别关:kithguard斗殴
    【codecombat】 试玩全攻略 第二章 边远地区的森林 森林保卫战
    【codecombat】 试玩全攻略 第二章 边远地区的森林
    实验3 类和对象||
  • 原文地址:https://www.cnblogs.com/liuteacher/p/10044787.html
Copyright © 2011-2022 走看看