2018年06月21日
《その409》タスク の実行
タスク の実行
下記のプログラムにおいて、タスク t1 は a の値を4乗した値を返します。
auto t1 = task<int>([&a]() {
return a = a * a * a * a ;
});
しかし、定義した直後の
cout << a << '\n';
では、4乗された値ではなく、最初の a の値が表示されます。
このことから、t1 は、生成されただけで実行はされていないことがわかります。
次の、
t1.wait();
cout << a << '\n';
では、4乗された値が表示されることから、タスクの実行完了を待つ wait がタスクを実行させることがわかります。
以下はプログラムです。
#include <iostream>
#include <ppltasks.h>
using namespace concurrency;
using namespace std;
int main() {
int a = 5;
auto t1 = task<int>([&a]() {
return a = a * a * a * a ;
});
cout << a << '\n';
t1.wait();
cout << a << '\n';
}

この記事へのコメント
コメントを書く
この記事へのトラックバックURL
https://fanblogs.jp/tb/7805426
※ブログオーナーが承認したトラックバックのみ表示されます。
この記事へのトラックバック