The Modern C++ Challenge 第7章

The Modern C++ Challenge 第6章 の続きです。

今回は第7章に挑戦します。

まずは目次を読む。

第7章 同時実行

61 並列変換アルゴリズム
62 スレッドを使用した並列最小および最大要素アルゴリズム
63 非同期関数を使用した並列最小および最大要素アルゴリズム
64 並列ソートアルゴリズム
65 コンソールへのスレッドセーフなロギング
66 カスタマーサービスシステム

問題文を読む。

問61 並列変換アルゴリズム 指定された単項関数を適用して範囲の要素を並列に変換する汎用アルゴリズムを作成します。 範囲の変換に使用される単項演算は、範囲反復子を無効にしたり、範囲の要素を変更したりしてはなりません。

ソースコードを斜め読みして実行する。

一通り実行できたので、
Modern C++ に着目して、ソースコードを読んでみる。

第62問にて std::async と 関数の戻り値型推論 を使っている。

cpprefjp std::async

cpprefjp: 関数の戻り値型推論

第63問にて ジェネリックラムダ を使っている。

cpprefjp: ジェネリックラムダ

第7章 のソースコードGithub に公開した。
https://github.com/ohwada/The-Modern-Cpp-Challenge/tree/main/The-Modern-Cpp-Challenge/Chapter07