完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
本帖最后由 ycd37850105 于 2016-9-18 21:41 编辑
我们把单指令的操作称为原子操作(Atomic),因为无论如何,单条指令的执行是不会被打断的。很多体系结构都提供了一些常用操作的原子指令,这些原子指令的作用就是避免多线程同时对一个共享数据进行读写操作。没有原子指令,可能会造成很恶劣的后果。一个著名的例子: 假设有两个线程要同时访问一个变量。 线程1: i = 1; ++i; 线程2: --i; 在很多体系结构上,++i的实现方法会如下: A. 读取i到某个寄存器X; B. X++; C. 将X的内容存储回i。 由于这两个线程并发执行,因此两个线程执行的顺序可能如下(不同线程下的寄存器X不同,X1和X2代表线程1和线程2中的X):
从逻辑上看,程序执行完后i的值应该为1,但从上面的执行顺序可以看到,i的值为0。实际上这两个线程如果同时执行的话,i的结果有可能是0或1或2。可见,两个程序同时读写同一个共享数据会导致意想不到的后果。此时,原子操作指令就可以避免该情况发生。 |
|||
|
|||
753 浏览 0 评论
AI模型部署边缘设备的奇妙之旅:如何在边缘端部署OpenCV
2714 浏览 0 评论
tms320280021 adc采样波形,为什么adc采样频率上来波形就不好了?
1368 浏览 0 评论
1955 浏览 0 评论
1523 浏览 0 评论
74979 浏览 21 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-25 08:44 , Processed in 0.454246 second(s), Total 61, Slave 44 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号