【发布时间】:2018-02-12 10:48:49
【问题描述】:
我一直在阅读有关多线程、C++、正确同步和防止竞争条件的锁的不同内容。但是,我没有回答一个问题: 如果我在线程 A 中创建了一个对象,但之后只在线程 B 中使用它,是否需要互斥锁?
换句话说,我知道我不需要互斥锁来防止竞争条件 - 我是否需要互斥锁来充当内存屏障(或其他潜在问题)?
一个非常基本的例子来形象化我的意思
struct Object {
void do_stuff();
};
Object o;
std::thread worker_thread([&o](){
while (alive)
o.do_stuff();
}).join();
// `o` is never used outside worker_thread
如果您还可以向我推荐一些文章/书籍,我会很高兴我可以阅读更多有关该主题和/或正确的关键字来搜索这些场景。
【问题讨论】:
-
如果只有一个线程在使用该对象,你可以指望它,那么你应该没有问题。
标签: c++ multithreading mutex