互斥锁
互斥锁
(保证数据安全, 自己加锁容易出现死锁.)
为了保证数据安全而出现的一把锁,当多个进程抢占一个资源时 将并发变成了串行 谁先抢到锁先执行 如果这个程序遇到了io阻塞 操作系统会使cpu切换到其他进程,当切换到其他进程时发现他没有这吧锁,就会跳过他从而保证了数据安全 注意锁必须要同一把 多用于 抢购 依次执行
互斥锁与join区别共同点?
# 互斥锁与join区别共同点? (面试题) # 共同点: 都是完成了进程之间的串行. # 区别: join认为控制的进程串行,互斥锁是随机的抢占资源.保证了公平性
互斥锁的实列
# 在生活中我们会遇到一些事情,必须在保证公平的情况下又可以保护数据安全 # 并发变为串行 # 以下是打印机实列 我们希望谁先抢到,谁先运行 且是依次执行 from multiprocessing import Process from multiprocessing import Lock import os import time import random def task(lock):#模拟打印 lock.acquire()#加锁 print(f'{os.getpid()}打印开始了') time.sleep(random.randint(1,3)) print(f'{os.getpid()}打印结束了') lock.release()#解锁 if __name__ == '__main__': lock=Lock() for i in range(4): p=Process(target=task,args=((lock,))) p.start() # 遇到的问题 # 为什么加锁要同一把锁 不是同一把会怎么样? # 锁就是一个凭证,当只有一把锁时 他保证了运行时的唯一行,如果大家都有了也就不可以约束了
相关推荐
hackerlpy 2020-09-25
chaigang 2020-06-13
鲁鲁酱 2020-06-02
sunnyJam 2020-03-27
ITxiaobaibai 2020-02-18
wanggongzhen 2020-01-09
tangjianft 2020-01-05
Attend 2010-09-04
farmanlinuxer 2011-04-01
kuailexiaochuan 2015-04-11
sprintwind 2012-06-06
wacsdn 2011-10-30
pointfish 2011-08-23
CloudCraft 2010-08-06
sqlican 2019-07-01
cleanerxiaoqiang 2019-06-30
cmsmdn 2018-10-07
happylife 2018-06-13