C++11 希望用 thread 库来实现多线程,要启动线程,但thread类为什么没有start方法?我看网上很多文章都是用join方法来开启线程。join显然是同步的,没达到多线程异步的效果。
光阴似箭催人老,日月如移越少年。
std::thread::join()この関数は、スレッドを開始するためには使用されません。逆に、現在のスレッドをブロックし、対応するスレッドが終了するのを待つために使用されます。 std::thread オブジェクトが構築されると、新しいスレッドの実行が開始されます。
std::thread::join()
std::thread
join() 自体はスレッドを開始しません。 非同期アクセスでは、async を std::future と組み合わせて使用することもできます。ただし、std::launch::async が必須でない限り、これは新しいスレッドが起動されることを必ずしも保証しません。 get または wait 中の実行のみを保証できます。
join()
async
std::future
std::launch::async
std::thread::join()
この関数は、スレッドを開始するためには使用されません。逆に、現在のスレッドをブロックし、対応するスレッドが終了するのを待つために使用されます。std::thread
オブジェクトが構築されると、新しいスレッドの実行が開始されます。join()
自体はスレッドを開始しません。非同期アクセスでは、
async
をstd::future
と組み合わせて使用することもできます。ただし、std::launch::async
が必須でない限り、これは新しいスレッドが起動されることを必ずしも保証しません。 get または wait 中の実行のみを保証できます。