完善资料让更多小伙伴认识你,还能领取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。可见,两个程序同时读写同一个共享数据会导致意想不到的后果。此时,原子操作指令就可以避免该情况发生。 |
|||
|
|||
如何使用python调起UDE STK5.2进行下载自动化下载呢?
705 浏览 0 评论
开启全新AI时代 智能嵌入式系统快速发展——“第六届国产嵌入式操作系统技术与产业发展论坛”圆满结束
2369 浏览 0 评论
2024 RT-Thread全球巡回线下培训火热来袭!报名提问有奖!
23637 浏览 11 评论
2951 浏览 0 评论
IaaS+on+DPU(IoD)+下一代高性能算力底座技术白皮书
4429 浏览 0 评论
70503 浏览 21 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-10-18 19:34 , Processed in 0.548554 second(s), Total 62, Slave 45 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号