自学线程主题。到目前为止,据我所知,如果程序不是线程安全的,并且发生并发读/写,则可能会导致意想不到的效果。
但是,假设完美的准确性并不重要吗?假设您正在一个线程中轮询鼠标坐标,并且您的主线程读取这些值,而无需锁定。您可能无法获得完全准确的结果(新数据和旧数据的潜在混合),但只要轮询足够快,用户就不会察觉到不准确性。该方法不是线程安全的有关系吗?它会导致任何其他问题吗?
最佳答案
您不知道结果是什么,也无法判断它是否实际上接近预期值。假设鼠标的 X 位置存储在 2 个字节中,但您的系统只能原子写入 1 个字节。然后,如果实际值在背后从 255 更改为 256(0x00FF
到 0x0100
),则会出现一个内部步骤,0x00FF -> 0x01FF -> 0x0100
(或类似的),您可以在不知不觉中阅读。那么你会认为你的 x 值是 511 而不是 256,这是一个显着的差异,而不仅仅是几个像素。
关于multithreading - 线程安全可以被忽略吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21566103/