私は多くの人がこの質問をしていますが、「多くの人」ではないことを知っています。理解するためには別の説明が必要です。スレッド上の "detach()"とは何ですか? CPP
メンバ関数 "detach()"は正確に何をしていますか? 私は、次のサンプルコードを実行してみました:
#include <iostream>
#include <chrono>
#include <thread>
void independentThread()
{
std::cout << "Starting concurrent thread.\n";
std::this_thread::sleep_for(std::chrono::seconds(200));
std::cout << "Exiting concurrent thread.\n";
}
void threadCaller()
{
std::cout << "Starting thread caller.\n";
std::thread t(independentThread);
t.detach();
std::this_thread::sleep_for(std::chrono::seconds(1));
std::cout << "Exiting thread caller.\n";
}
int main()
{
threadCaller();
std::this_thread::sleep_for(std::chrono::seconds(5));
}
そして5秒後に、すべてのプログラムを閉じました。 私はプログラムが "メイン"クローズ後に別の195秒後に開かれると思った。なぜなら、 "デタッチ"のすべてのアイデアはメインとは独立しているから独立した方法で、分離されたすべてのtheradesが終わるまで... ドキュメントを読み、ここに来ました。 より良い説明 - してください! :)
['std :: async'](http://en.cppreference.com/w/cpp/thread/async)を使用すると、簡単に作業できます。 –