我一直在閱讀關於多線程,C++,適當的同步和鎖定以防止競爭條件的不同事情。還有一個問題沒有回答我,但是: 有沒有,如果我創建一個線程對象需要一個互斥體,但事後在線程B專門使用它?在線程A中創建對象,在線程B中使用。需要Mutex?
換句話說,我知道我不需要互斥體來防止競爭條件 - 我需要互斥體作爲內存屏障(或其他潛在問題)嗎?
一個非常簡單的例子,以可視化我的意思
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
我會很高興,如果你也可以推薦我的文章/書籍,我可以閱讀更多有關這一主題和/或正確的關鍵字來搜索這些場景。
如果只有一個線程使用對象,*您可以對*算的話,你應該沒有問題。 – Basya