首页 技术 正文
技术 2022年11月10日
0 收藏 387 点赞 4,116 浏览 924 个字

1,死锁

Python–day41–线程锁

死锁代码示例:

 import time
from threading import Lock, Thread noodle_lock = Lock()
fork_lock = Lock() def eat1(name):
noodle_lock.acquire()
print('%s拿到面了'%name)
fork_lock.acquire()
print('%s拿到叉子了'%name)
print('%s吃面'%name)
fork_lock.release()
noodle_lock.release() def eat2(name):
fork_lock.acquire()
print('%s拿到叉子了' % name)
time.sleep(1)
noodle_lock.acquire()
print('%s拿到面了'%name)
print('%s吃面'%name)
noodle_lock.release()
fork_lock.release() Thread(target=eat1,args=('alex',)).start()
Thread(target=eat2,args=('Egon',)).start()
Thread(target=eat1,args=('bossjin',)).start()
Thread(target=eat1,args=('nezha',)).start()

运行结果:

Python–day41–线程锁

2,线程锁只能保证同一时间只有一个线程取n值,并不能保证数据安全

Python–day41–线程锁

3,加锁保证了n不会被多个线程操纵;加锁保证数据安全

 import time
from threading import Lock,Thread def func(lock):
global n
#加锁保证了n不会被多个线程操纵
#获取锁的钥匙,加锁
lock.acquire()
temp = n
time.sleep(0.2)#睡眠0.2s
n = temp -1
#释放锁
lock.release() n = 10
t_lst = []
lock = Lock()
for i in range(10):
t = Thread(target=func,args=(lock,))
t.start()
t_lst.append(t) for t in t_lst:t.join()
print(n)

运行结果:

Python–day41–线程锁

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,082
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,557
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,406
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,179
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,815
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,898