线程 -- 线程同步(join和互斥锁)

2020-07-27  本文已影响0人  glRu

线程同步

保证同一时刻只能有一个线程去操作全局变量同步:就是协同步调按预定的先后次序进行运行

比如如:你说完,我再说,好比现实生活中的对讲机

线程同步的方式

1.线程等待(join)

2.互斥锁:对共享数据进行锁定,保证同一时刻只有一个线程去操作

注意:互斥锁是多个线程一起去抢,抢到锁的线程先执行(谁先抢到不知道),没有抢到锁的线程需要等待,等互斥锁使用完释放后,其它等待的线程再去抢这个锁.

互斥锁的使用步骤:

# 创建锁

mutex = threading.Lock()

# 上锁

mutex.acquire()

#这里编写代码保证同一时刻只能有一个线程去操作,对共享数据进行锁定

# 排放锁

mutex.release()

注意点:

acquire和 release方法之间的代码同一时刻只能有一个线程去操作

如果在调用 acquire方法的时候其他线程已经使用了这个互斥锁,那么此时 acquire方法会堵塞,直到这个互斥锁释放后才能再次上锁。

上一篇 下一篇

猜你喜欢

热点阅读