zoukankan      html  css  js  c++  java
  • 死锁 信息量

    当你今后在开发一些高并发程序时,很有可能出现线程/进程安全问题

    解决方案只有加锁,但是在使用锁时,很有可能出现死锁问题

    出现死锁的问题的两种问题的情况
    1,对同一把锁调用了多次 acquire导致死锁问题(最low的死锁问题),你应该避免这种写法
     2,你有多把锁,一个线程抢一把锁,要完成任务必须同时抢到所有的锁,这将导致死锁

    如何避免:

    1 能不加锁就不加锁

    2 如果一定要加 要保证锁只有一把

    from threading import Thread
    import time

    #第一种死锁

    lock = Lock()
    lock.acpuire()
    lock.acquire()
    print('over')
    #第二种死锁

    #可以看做一个盘子 一双筷子
    lock1 = Lock()
    lock2 = Lock()

    def task1():

      lock1.acpuire()
      print('%s抢到了盘子”%name)
      time,sleep(1)

      lock2.acpure()

      print("%s 抢到了筷子..."%name)
      print("%s 吃饭了..."%name)
      lock1.release()

      lock2.release()

    def task2(name):

      lock2.acquire()
      print("%抢到了筷子”%name)
      lock1.acqire()
      print("%s吃饭了...."%name)

      lock1.release()
      lock2.release()

    t1 = Thread(target = task1,args = ("渣渣hui")

    t1.start()
    t2 = Thread(target = task2,args = ("大导演”)
    t2.start()

    信息量

    可以控制同一时间有多少线程可以并发的访问

    不是用来处理线程的安全问题

    from threading import Semaphore
    s_lock = Semaphore(3)
    def task():

      s_lock.acquire()
      time.sleep(1)
      print("run...)

      s_lock.release()

    for i in range(20):
      t = Thread(target = task)

      t.start()

  • 相关阅读:
    iOS中按钮点击事件处理方式
    用PNChart绘制折线图
    用PNChart绘制饼状图简介
    MWeb发布到博客园配置
    对数组排序后,获取排序前元素索引
    iOS学习笔记之触摸事件&UIResponder
    iOS学习笔记之UITableViewController&UITableView
    4.matplotlib绘制直方图
    2. matplotlib绘制散点图
    3.matplotlib绘制条形图
  • 原文地址:https://www.cnblogs.com/tangda/p/10519540.html
Copyright © 2011-2022 走看看