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。

      

  • 相关阅读:
    VIM下的可视模式的相关知识
    VIM下的插入模式的相关知识:
    VIM下的普通模式的相关知识
    VIM中一些按键的作用:
    大师源于勤奋
    在你放弃以前,问问自己这6个问题
    一键查看IE密码!IE PassView简易教程
    如何查看Chrome浏览器保存的账号密码
    如何查看Firefox中保存的登录密码
    谈谈360浏览器保存密码的差异
  • 原文地址:https://www.cnblogs.com/liuteacher/p/10044787.html
Copyright © 2011-2022 走看看