所以我正在处理以下情况。我希望我的所有线程都进行循环,直到没有一个线程达到某个"if",所以我使用一个全局变量来存储0,当达到if语句时,该变量变为1。
问题是,在循环结束时,我做了一个屏障来同步所有线程(在我的情况下,我只有4个),只有当全局变量的值为1时,其他线程的值为0。
怎么可能呢?一个全局变量如何在不同的线程中具有不同的值?
我认为全局变量被设置为一些缓冲区和缓存,其中一个线程将此变量写入1,但不写入物理内存,而是写入缓存行。在这种情况下,其他线程没有得到更新的值。