並行処理の拡張
From cppreference.com
< cpp | experimental
C++ Extensions for Concurrency, ISO/IEC TS 19571:2016 は、C++標準ライブラリに以下の新しいコンポーネントを定義しています。
目次 |
[編集] 継続とstd::futureのその他の拡張
| ヘッダ
<experimental/future> で定義 | |
| (concurrency TS) |
継続やその他の機能で強化された std::future のバージョン (クラステンプレート) |
| (concurrency TS) |
継続やその他の機能で強化された std::shared_future のバージョン (クラステンプレート) |
| (concurrency TS) |
std::experimental::future を使用するように変更された std::promise のバージョン (クラステンプレート) |
| (concurrency TS) |
std::experimental::future を使用するように変更された std::packaged_task のバージョン (クラステンプレート) |
| (concurrency TS) |
与えられたすべての future または `shared_futures` が準備完了になったときに準備完了になる future を生成する (関数テンプレート) |
| (concurrency TS) |
与えられた future または shared_future のうち少なくとも1つが準備完了になったときに準備完了になる future を生成する (関数テンプレート) |
| (concurrency TS) |
即座に準備完了になり、与えられた値を保持する future を生成する (関数テンプレート) |
| (concurrency TS) |
即座に準備完了になり、与えられた例外を保持する future を生成する (関数テンプレート) |
[編集] 機能テストマクロ
| ヘッダ
<experimental/future> で定義 | |
| __cpp_lib_experimental_future_continuations |
201505 以上の値は、future::then およびその他の拡張がサポートされていることを示す (マクロ定数) |
| ヘッダ
<experimental/latch> で定義 | |
| __cpp_lib_experimental_latch |
201505 以上の値は、latch 型がサポートされていることを示す (マクロ定数) |
| ヘッダ
<experimental/barrier> で定義 | |
| __cpp_lib_experimental_barrier |
201505 以上の値は、barrier 型がサポートされていることを示す (マクロ定数) |
| ヘッダ
<experimental/atomic> で定義 | |
| __cpp_lib_experimental_atomic_smart_pointers |
201505 以上の値は、アトミックなスマートポインタがサポートされていることを示す (マクロ定数) |
[編集] C++20にマージされた機能
Concurrency TS の以下のコンポーネントは、C++20 標準に採用されました。
[編集] ラッチとバリア
| ヘッダ
<experimental/latch> で定義 | |
| (concurrency TS) |
一度だけ使用可能なスレッドバリア (クラス) |
| ヘッダ
<experimental/barrier> で定義 | |
| (concurrency TS) |
再利用可能なスレッドバリア (クラス) |
| (concurrency TS) |
完了時の動作をカスタマイズ可能な再利用可能なスレッドバリア (クラス) |
[編集] アトミックなスマートポインタ
これらのクラステンプレートは、shared_ptr のアトミック関数オーバーロードを置き換える
| ヘッダ
<experimental/atomic> で定義 | |
| (concurrency TS) |
std::shared_ptr のアトミック版 (クラステンプレート) |
| (concurrency TS) |
std::weak_ptr のアトミック版 (クラステンプレート) |