次のコード スニペットでは、
void foo() {
std::this_thread::native_handle().... //error here
}
int main() {
std::thread t1(foo);
t1.join();
return 0;
}
関数内native_handle
からfromを取得するにはどうすればよいですか?std::this_thread
foo
スレッドが自律的に独自の にアクセスする方法はありませんstd::thread
。std::thread
移動専用タイプなのでわざとです。
あなたが要求しているのは のnative_handle()
メンバーだと思います。std::thread::id
それは興味深い提案です。私の知る限り、現時点では不可能です。次のように使用されます。
void foo()
{
auto native_me = std::this_thread::get_id().native_handle();
// ...
}
動作することは保証されず、存在することさえありません。ただし、ほとんどの POSIX プラットフォームでサポートできると思います。
C++ 標準を変更しようとする 1 つの方法は、Issue を送信することです。 手順は次のとおりです。
C++11 には、現在のスレッドの native_handle を取得するメカニズムがありません。プラットフォーム固有の呼び出し、つまり Windows では GetCurrentThread() を使用する必要があります。
void foo()
{
auto native_me = ::GetCurrentThread();
}