同步锁

Posted 阜阳小全

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了同步锁相关的知识,希望对你有一定的参考价值。

‘‘‘
GIL:全局解释锁
  因为有GIL,所以,同一时刻,只有一个线程被cpu执行
    处理方法:多进程+协程
任务种类:IO密集型
     计算密集型
对于IO密集型的任务,Python的多线程时有意义的
          可以采用多进程+协程
对计算密集型的任务,Python的多线程就不推荐,Python就不适用了
‘‘‘


#   同步锁
import threading
import time


def sub():
    global  num

    lock.acquire()  # 加同步锁
    temp = num
    time.sleep(0.0005)
    num = temp -1
    lock.release() #释放锁

num = 100


l = []
lock = threading.Lock() #创建锁

for i in range(100):
    t = threading.Thread(target=sub)
    t.start()
    l.append(t)

for i in l:
    i.join()

print(num)

 

以上是关于同步锁的主要内容,如果未能解决你的问题,请参考以下文章

静态方法内的同步块将获取类级别锁或对象级别锁

ReleaseMutex:从非同步代码块调用对象同步方法

并发技术12线程锁技术的使用

java并发线程锁技术的使用

ReentrantReadWriteLock场景应用

java中ReentrantReadWriteLock读写锁的使用