黑马程序员技术交流社区
标题:
互斥锁
[打印本页]
作者:
参商
时间:
2019-6-27 21:00
标题:
互斥锁
互斥锁:对共享数据进行锁定,保证同一时刻只能有一个线程去操作。
互斥锁是多个线程一起去抢,抢到锁的线程先执行,没有抢到锁的线程需要等待,等互斥锁使用完释放后,其它等待的线程再去抢这个锁。
互斥锁的使用:
# 创建锁
mutex = threading.Lock()
# 上锁
metex.acquire()
# 释放锁
metex.release()
复制代码
示例代码
import threading
# 定义全局变量
g_num = 0
# 创建全局互斥锁
lock = threading.Lock()
def sum_num1():
# 上锁
lock.acquire()
global g_num
for i in range(1000000):
g_num += 1
# 释放锁
lock.release()
print("线程1结束后的计算值sum1为:", g_num)
def sum_num2():
# 上锁
lock.acquire()
global g_num
for i in range(1000000):
g_num += 1
# 释放锁
lock.release()
print("线程2结束后的计算值sum2为:", g_num)
if __name__ == '__main__':
# 创建两个线程
first_thread = threading.Thread(target=sum_num1)
second_thread = threading.Thread(target=sum_num2)
# 启动线程
first_thread.start()
# 启动线程
second_thread.start()
"""
执行结果:
线程1结束后的计算值sum1为: 1000000
线程2结束后的计算值sum2为: 2000000
"""
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2