2011-12-19 8 views
0

私はsmart_ptrスレッドの安全性を避けるために、ブーストマクロ(コンパイル時に設定する必要があります)を話している人々がいくつかのstackoverflow質問/回答を見てきました。私はそれを探していて、それを見つけることができませんでした。誰かがそれを指摘できますか?boost smart_ptrスレッドセーフではないマクロ、本当に存在しますか?

一方、このマクロを使用すると、参照カウントヒープ割り当てが回避されますか?

ありがとうございます。

答えて

3

http://www.boost.org/doc/libs/1_48_0/libs/smart_ptr/shared_ptr.htm#ThreadSafety

あなたのプログラムがシングルスレッドであり、そのデフォルトの設定でのshared_ptrを使用していた可能性のあるすべてのライブラリにリンクしない場合は、切り替えるためにプロジェクト全体でマクロBOOST_SP_DISABLE_THREADSを#defineすることができます通常の非原子参照カウントの更新までです。

+0

これは明らかに私のせいでした。リンクありがとう。一方、それはまだ参照カウントのためにヒープを使用していますか? – Notbad

+0

@Notbad:あなたは 'shared_ptr'を引き渡し、どこかに保存することができることを考慮して、ヒープを使用している必要があります。あなたが関数 'shared_ptr foo()'を呼び出したとしたら、そうでなければスタックのref-countをどのように保つことができますか?参照が解放される順序は、スレッド化にも依存しません。 'Foo'が' bar'に 'shared_ptr'を与え、' Foo'が殺されたとします。 –

+0

説明をありがとう。私は今どのように愚かな質問を参照してください:)。 – Notbad

関連する問題