码迷,mamicode.com
首页 > 其他好文 > 详细

临界数据、临界区和原子操作

时间:2017-09-27 13:10:48      阅读:154      评论:0      收藏:0      [点我收藏+]

标签:detail   标准输出   代码区   csdn   另一个   列操作   时间   原子操作   操作   

1、首先给出这三个名词的定义。

临界数据指多个进程(或线程)会竞争修改的数据。

临界区指修改临界数据的代码区域。

原子操作指临界区的代码不会被这个临界数据的其他临界区的代码打断。

2、通过一个实例来理解这些概念。

技术分享

在这个实例中临界数据是标准输出,临界数据对应的其中一个临界区就是图中红框部分,红框中的临界区代码不应该被其他临界区打断,否则就有可能出现标准输出被打乱。通过信号量使得临界数据同一时间只能被一个临界区访问。

也就是说如果现在一个临界区在访问这个临界数据,那么当进程进行调度时,绝对不会切换到另一个临界区,只可能切换到其他代码。这也就是上面“同一时间”的含义。

修改stdout的这一系列操作因为不会被其他临界区打乱,所以变成了原子操作。

参考:http://blog.csdn.net/ljianhui/article/details/10243617

 

临界数据、临界区和原子操作

标签:detail   标准输出   代码区   csdn   另一个   列操作   时间   原子操作   操作   

原文地址:http://www.cnblogs.com/midhillzhou/p/7600837.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!