multithreading - 线程安全可以被忽略吗?

标签 multithreading thread-safety mutex

自学线程主题。到目前为止,据我所知,如果程序不是线程安全的,并且发生并发读/写,则可能会导致意想不到的效果。

但是,假设完美的准确性并不重要吗?假设您正在一个线程中轮询鼠标坐标,并且您的主线程读取这些值,而无需锁定。您可能无法获得完全准确的结果(新数据和旧数据的潜在混合),但只要轮询足够快,用户就不会察觉到不准确性。该方法不是线程安全的有关系吗?它会导致任何其他问题吗?

最佳答案

您不知道结果是什么,也无法判断它是否实际上接近预期值。假设鼠标的 X 位置存储在 2 个字节中,但您的系统只能原子写入 1 个字节。然后,如果实际值在背后从 255 更改为 256(0x00FF0x0100),则会出现一个内部步骤,0x00FF -> 0x01FF -> 0x0100 (或类似的),您可以在不知不觉中阅读。那么你会认为你的 x 值是 511 而不是 256,这是一个显着的差异,而不仅仅是几个像素。

关于multithreading - 线程安全可以被忽略吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21566103/

相关文章:

java - 并发:HashMap 和 Lists 作为值

c++ - 使用 Qt/C++ 从单独的线程发出对象时如何避免复制?

multithreading - 使用同步时出现问题

c - 线程安全与可重入

c++ - 仍然存在与 boost::mutex 的竞争条件

kotlin - 正确的互斥方式

android - 为什么android服务运行在UI线程上?

.net - RabbitMQ 与 .NET

c++ - 局部静态函数对象的初始化是线程安全的吗?

c++ - 最令人费解的C++堆分配错误