2012-01-23 31 views
10

我有一個問題,理解爲什麼shared_ptr使用原子CPU指令......我無法弄清原因,因爲它不是線程安全的。 有人可以請解釋。爲什麼std :: shared_ptr使用原子CPU操作

如果你想知道我是如何知道它使用原子intstuructions:有一個來自C++和超過Herb和安德烈談論它的剪輯,但他們從來沒有提到它是這樣的原因。

回答

15

shared_ptr的任何實例都是多線程安全的。它指向的數據不是多線程安全的。見this

原子指令如果正確應用(通過競爭線程訪問以相同順序完成保護)是實現線程安全的一種方法。另一種方法是使用互斥鎖。

見BOOST一個類似的問題:Is boost shared_ptr xxx thread safe?

+6

更具體: 'shared_ptr'內的共享引用計數可以被多個線程訪問。這就是爲什麼有必要自動增加/減少它。 –

相關問題