【发布时间】:2015-09-18 13:23:00
【问题描述】:
如果我在一个线程中设置变量的值并在另一个线程中读取它,我会用锁保护它以确保第二个线程读取第一个线程最近设置的值:
线程 1:
lock();
x=3;
unlock();
线程 2:
lock();
<use the value of x>
unlock();
到目前为止,一切都很好。但是,假设我有一个 c++ 对象,它在初始化程序中设置 x 的值:
theClass::theClass() : x(3) ...
theClass theInstance;
然后,我生成一个使用实例的线程。是否可以保证新生成的线程会看到正确的 x 值?或者是否有必要在 theInstance 的声明周围加锁?我主要对 Linux 上的 c++ 感兴趣。
【问题讨论】:
-
特定于编程和软件开发的问题不在主题范围内,请参阅What topics can I ask about here?。
标签: linux memory c++ multithreading