0
我曾經在一些stackoverflow上看到過關於boost宏的問題/答案(我想它應該在編譯時設置)以避免smart_ptr線程安全。我一直在尋找它,無法找到它。有人可以指出嗎?boost smart_ptr非線程安全宏,它真的存在嗎?
另一方面,使用這個宏將避免ref計數堆分配?
在此先感謝。
我曾經在一些stackoverflow上看到過關於boost宏的問題/答案(我想它應該在編譯時設置)以避免smart_ptr線程安全。我一直在尋找它,無法找到它。有人可以指出嗎?boost smart_ptr非線程安全宏,它真的存在嗎?
另一方面,使用這個宏將避免ref計數堆分配?
在此先感謝。
http://www.boost.org/doc/libs/1_48_0/libs/smart_ptr/shared_ptr.htm#ThreadSafety
如果你的程序是單線程的,不鏈接到可能在其默認配置已經使用的shared_ptr的庫,可以將#define項目範圍的基礎上的宏觀BOOST_SP_DISABLE_THREADS切換到普通的非原子引用計數更新。
這顯然是我的錯。感謝您的鏈接。另一方面,它是否仍然使用堆進行引用計數? – Notbad 2011-12-19 12:32:45
@Notbad:考慮到你仍然可以通過'shared_ptr's,將它們存儲在某處等等,它必須使用堆。想象一下,你調用一個函數'shared_ptr foo()',那麼如何保存堆棧上的ref-count呢?引用的發佈順序也不依賴於線程。想象一下'Foo'給'Bar'一個'shared_ptr',然後'Foo'被殺死。 –
2011-12-19 12:35:41
再次感謝您的解釋。我現在看到它是一個多麼愚蠢的問題:)。 – Notbad 2011-12-19 12:50:33