アフィリエイト広告を利用しています

広告

posted by fanblog

2018年06月21日

《その408》コンストラクタによる taskオブジェクトの生成


 下記のプログラムでは、まず、create_task関数で taskオブジェクトを作っています。
then関数により処理が継続し、t1 〜 t4 の順に実行されます。
   auto t1 = create_task([] { cout << "aaaaaa\n"; });
   auto t2 = t1.then([] { return "xxxxxx"; });
   auto t3 = t2.then([](string str) { cout << 100 << '\n'; });
   auto t4 = t3.then([] { return 888; });



 コンストラクタによる taskオブジェクトの生成

 クラステンプレート task<> を用いて、
   返却値無しの taskオブジェクは、コンストラクタ task<void> により、
   返却値が int型の taskオブジェクは、コンストラクタ task<int> により、
   返却値が string型の taskオブジェクは、コンストラクタ task<string> により、
それぞれ生成することができます。

 t4 の終了を待って t5, t6 の処理が行われますが、どちらが先に完了するかは決まっていません。
   t4.wait();
   auto t5 = task<void>([] { cout << "bbbbbb\n"; });
   auto t6 = task<string>([] { return "yyyyyy"; });


 t5 の終了を待って t7, t8 の処理が行われますが、どちらが先に完了するかは決まっていません。
   t5.wait();
   auto t7 = task<void>([] { cout << 200 << '\n'; });
   auto t8 = task<int>([] { return 999; });



 以上から、
 画面出力をする task の実行は、t1, t3, t5, t7 の順に行われることになります。

 最後に、t7 の終了を待って t2, t4, t6, t8 の返却値を表示します。
   t7.wait();
   cout << t2.get() << '\n';
   cout << t4.get() << '\n';
   cout << t6.get() << '\n';
   cout << t8.get() << '\n';


以下はプログラムです。

#include <iostream>
#include <ppltasks.h>
#include <string>
using namespace concurrency;
using namespace std;

int main() {
// create_task関数で taskオブジェクトを作る例
auto t1 = create_task([] { cout << "aaaaaa\n"; });
auto t2 = t1.then([] { return "xxxxxx"; });
auto t3 = t2.then([](string str) { cout << 100 << '\n'; });
auto t4 = t3.then([] { return 888; });

// コンストラクタで taskオブジェクトを作る例
t4.wait();
auto t5 = task<void>([] { cout << "bbbbbb\n"; });
auto t6 = task<string>([] { return "yyyyyy"; });
t5.wait();
auto t7 = task<void>([] { cout << 200 << '\n'; });
auto t8 = task<int>([] { return 999; });

t7.wait();
cout << t2.get() << '\n';
cout << t4.get() << '\n';
cout << t6.get() << '\n';
cout << t8.get() << '\n';
}

add_d256.png



この記事へのコメント
コメントを書く

お名前:

メールアドレス:


ホームページアドレス:

コメント:

※ブログオーナーが承認したコメントのみ表示されます。

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

この記事へのトラックバック

 たまに、クリック お願いします m(_ _)m

 AA にほんブログ村 IT技術ブログ C/C++へ

こうすけ:メール kousuke_cpp@outlook.jp

【1】★★C++ 記事目次★★ ← 利用可能です。
・新版明解C++入門編 / 新版明解C++中級編
・その他 C++ 関連記事

【2】★★こうすけ@C#★★
・C# の初歩的な記事


検索
<< 2018年08月 >>
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  
プロフィール
こうすけさんの画像
こうすけ

 たまに、クリック お願いします m(_ _)m

 AA にほんブログ村 IT技術ブログ C/C++へ

こうすけ:メール kousuke_cpp@outlook.jp

【1】★★C++ 記事目次★★ ← 利用可能です。
・新版明解C++入門編 / 新版明解C++中級編
・その他 C++ 関連記事

【2】★★こうすけ@C#★★
・C# の初歩的な記事


×

この広告は30日以上新しい記事の更新がないブログに表示されております。