C++,两个只是没有锁的编写器线程

Ron*_*Ron 0 c++ linux multithreading

我有3个帖子.

  • 线程A和线程B只是编写者.

  • 线程C是一个公正的读者.

  • 变量是time_t.

我需要验证没有数据损坏.如果数据来自线程A或来自线程B,那么就可以了.

但是,如果变量的结果是来自线程A的数据,则不是来自线程B,因此它已被破坏

正如我想的那样,因为time_t可以在一次装配操作中写入,所以它就可以了.

是对的吗?

谢谢

Rei*_*ica 6

如果您有两个可能并发写入(1)到共享位置而没有它们之间的同步,则您具有未定义行为,并且可能发生任何事情.所以这是一个坏主意.

请注意,即使您无法想象基于您对底层架构的了解而导致执行不良,优化器也可能会妨碍,因为允许UB不会发生.


(1)请注意,即使一个写入器和一个没有同步的读取器也是完全相同的UB.