std::thread - スレッドに名前を付ける 質問する

std::thread - スレッドに名前を付ける 質問する

新しい C++ には、この std::thread 型があります。これはうまく機能します。次に、各スレッドに名前を付けて、デバッグをもっと簡単にしたいと思います (Java のように)。pthreads の場合は、次のようにします。

pthread_setname_np(pthread_self(), "thread_name");

しかし、これを c++0x でどうやったら実現できるのでしょうか? Linux システムでは pthreads が基盤として使用されていることは知っていますが、アプリケーションを移植可能にしたいのです。それは可能なのでしょうか?

ベストアンサー1

これを行う移植可能な方法は、 から取得したスレッドの ID をキーとする名前のマップを維持することです。あるいは、コメントで提案されているように、スレッド内からのみ名前にアクセスする必要がある場合は、変数をthread::get_id()使用することもできます。thread_local

移植性が必要ない場合は、基礎となる を取得しpthread_tthread::native_handle()、それを使用してプラットフォーム固有の任意の操作を行うことができます。_npスレッド命名関数の は「POSIX ではない」ことを意味するため、すべての pthreads 実装で使用できるとは限らないことに注意してください。

おすすめ記事