C++17予定らしいawait
C#では便利なawaitがありますが、C++にも導入予定らしいです。これでマルチスレッド周りがより便利になりますね。VC++ 2013Nov CTPより、VisualStudioでもインテリセンスはキキませんがコンパイルができるので色々遊べます。ジェネリックラムダとかconstexprとか無制限unionとか普通に使いたいですね。
#include <cstdio> #include <ppltasks.h> #include <pplawait.h> concurrency::task<void> func() __resumable { Sleep(100); } // __awaitを使う関数は__resumableがついていないとダメ concurrency::task<void> execute_func() __resumable { printf("start of func\n"); __await func(); // ここでfuncの終了を待ち合わせる printf("end of func\n"); } int main() { printf("start of main\n"); auto task = execute_func(); // 関数の実行が終わらなくても printf("wait in main\n"); // ここで実行される task.wait(); // execute_funcの終了を待つ printf("join at main\n"); getchar(); return 0; }