首页 > 编程语言 > 详细

线程安全与锁的概念

时间:2019-03-21 19:20:13      阅读:147      评论:0      收藏:0      [点我收藏+]

一个进程包含:运行进程的程序、数据集以及进程控制块。其中进程控制块是保证系统可以进行多任务并发的关键,它控制着进程间的切换活动。

进程是系统中最小的资源分配单位,而线程是系统中最小的执行单位。多个线程可以共享同一个进程内的数据集,很多情况下,线程访问数据集的速度过快,而数据集的更新却跟不上被访问的速度,导致了访问出现错误。这就是线程安全问题。

 假设有一百个线程同时来操纵一个数,每个线程运行一次减1的操作。代码如下:

 1 import time
 2 import threading
 3 
 4 num = 100
 5 
 6 def redNum():
 7 
 8     global num  # 引用的是全局变量num
 9     num = num - 1  # 对num进行-1操作
10 
11 thread_list = [] # 存放多个线程的列表
12 
13 for i in range(100):
14     t = threading.Thread(target=redNum)
15     t.start()
16     thread_list.append(t)
17 
18 for t in thread_list:  # 阻塞主线程,等待子线程执行完毕
19     t.join()
20 
21 print(num的最终值:, num)

打印结果:

num的最终值: 0

我们获取了想要的结果,这个结果与串行执行程序的结果并无区别。但是当我们加上时间延迟后,情况就变得不一样了:

 

线程安全与锁的概念

原文:https://www.cnblogs.com/guyexiangyun/p/10571437.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!