在 C++ 中,我觉得我一直被引导相信像 var++ 和 var- 这样的东西是合理的线程安全的 - 又名 - 你可以保证你的价值会在某个时间点增加或减少。
正是基于这种信念,我建立了对线程安全操作的非阻塞算法的理解。然而,今天我很震惊,因为我有一个变量没有增加——因此我质疑我过去大量工作的有效性。
在一个小程序中,我有一个初始化为0的全局变量。启动了8个P-Threads,每个调用varname++共1024次,总计8*1024增量。然而,在所有线程执行完毕后,varname 的值明显小于 8*1024。
我错过了这里的船吗?有人可以启发我吗?