3.1《庖丁解牛:信号量(Semaphore)与互斥量(Mutex)深度剖析》
庖丁解牛:信号量(Semaphore)与互斥量(Mutex)深度剖析001、并发编程基石:为何需要信号量与互斥量?深夜两点,调试器停在了第187行。一个看似简单的计数器,在双核芯片上跑了不到十分钟,数值就开始“跳变”——有时加一,有时加二,偶尔还会倒退。逻辑检查了三遍,没发现算法错误。直到把断点打在汇编层面,才看到两个核的指令交织在一起:LDREX和STREX之间插进了另一个核的写操作。那一刻我突然意识到,并发问题不是“理论场景”,而是真实存在的幽灵。并发世界的根本矛盾单核时代,我们靠中断屏蔽和任务切换就能控制执行流。多核普及后,真正的并行来了:两个线程可能同时读写同一块内存,两个任务可能竞争同一个硬件外设。这时候,代码的“正确性”不再只取决于逻辑,还取决于执行时序——而时序是不可预测的。那个计数器的例子,暴露的就是典型的数据竞争:// 伪代码示意intcounter=0;
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2499099.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!