|
InterLockedIncrement and InterLockedDecrement 实现数的原子性加减。 什么是原子性的加减呢? 举个例子:如果一个变量 Long value =0; 首先说一下正常情况下的加减操作:value+=1; 1:系统从Value的空间取出值,并动态生成一个空间来存储取出来的值; 2:将取出来的值和1作加法,并且将和放回Value的空间覆盖掉原值。加法结束。
1:threadA将Value从存储空间取出,为0; 2:threadB将Value从存储空间取出,为0; 3:threadA将取出来的值和1作加法,并且将和放回Value的空间覆盖掉原值。加法结束,Value=1。 4:threadB将取出来的值和1作加法,并且将和放回Value的空间覆盖掉原值。加法结束,Value=1。 最后Value =1 ,而正确应该是2;这就是问题的所在,InterLockedIncrement 能够保证在一个线程访问变量时其它线程不能访问。同理InterLockedDecrement。
LONG InterlockedDecrement( |
win32的计数增减操作的原子操作--InterLockedIncrement和InterlockedDecrement
最新推荐文章于 2024-05-07 16:08:52 发布
本文深入探讨了InterlockedDecrement函数在多线程环境下的作用及其实现原理,解释了原子性减法的概念及其在解决全局变量访问冲突时的重要性。通过示例说明了在多线程环境下,不使用InterlockedDecrement可能导致的数据不一致性问题,并详细阐述了其执行过程,强调了多线程同步和共享资源访问控制的必要性。

208

被折叠的 条评论
为什么被折叠?



