std::threadアプリケーションを高速化するために使用する必要がある場合があります。join()スレッドが完了するまで待機することも知っています。これは理解しやすいですが、detach()呼び出すことと呼び出さないことの違いは何ですか?
なしdetach()では、スレッドのメソッドはスレッドを独立して使用して動作すると思いました。
切り離さない:
void Someclass::Somefunction() {
//...
std::thread t([ ] {
printf("thread called without detach");
});
//some code here
}
デタッチして呼び出す:
void Someclass::Somefunction() {
//...
std::thread t([ ] {
printf("thread called with detach");
});
t.detach();
//some code here
}
stdとboostスレッドはどちらも、POSIXスレッドdetachをjoinモデルにしています。