互斥锁和join的区别

from multiprocessing import Process
import time, json
def serch(name):
dic = json.load(open('db.txt', 'r', encoding='utf-8'))
print('%s查看到的票数为:%s'%(name, dic['count']))
def get(name):
dic = json.load(open('db.txt', 'r', encoding='utf-8'))
if dic['count'] >= 1:
dic['count'] -= 1
time.sleep(2)
json.dump(dic, open('db.txt', 'w', encoding='utf-8'))
print('%s抢票成功'%name)
else:
print('%s抢票失败'%name)
def task(name):
serch(name)
get(name)
if __name__ == '__main__':
for i in range(10):
p = Process(target=task, args=('路人%s'%i,))
p.start()
p.join()


# join和互斥锁的区别是join是整体串行,互斥锁可以部分串行, 换句话说就好比互斥锁可以保证最最先看到票的人有优先选择权,而join是等待一个人查票并抢票成功后才给其他人查票和抢票的权限。
原文地址:https://www.cnblogs.com/yuexijun/p/11520102.html