4

クラスの 1つのさまざまな関数を呼び出すスレッドをテストしたいと思います。クリティカル タイム スレッドがあり、そのスレッドから呼び出される可能性のある関数を誰にも呼び出されたくないのですnew。ただし、2 つの関数は public であるため、言語で強制することはできません。

私の考えは、スレッド id をテストすることです。スレッド ID を初期化する呼び出しが正しいスレッドにあることを確認できると仮定するとthread::get_id()、他の呼び出しを呼び出して、保存したスレッド ID と比較するだけで済みます。

問題は、この ID の重要なスレッドでもテストしたいのですが、そのスレッドをロックできないことです。

したがって、私の質問は次のとおりthread::get_id()です。

4

1 に答える 1

7

標準は、thread::get_id()std::this_thread::get_id()がロックフリーかどうか、さらにはその複雑さについても保証しません。

あなたの質問への答えは、特定の標準ライブラリと基礎となるスレッド ライブラリに応じて、実装固有のものになると思います。

于 2013-05-29T13:04:16.120 に答える