[解決済み] std::promiseとは何ですか?
質問
私は、C++11の
std::thread
,
std::async
と
std::future
コンポーネントを使用します(例
この回答
というように、簡単なものです。
しかし
std::promise
は、何をするものなのか、どのような場面で使うのが最適なのか。規格書自体には、クラスの概要以上の情報はなく、また
std::スレッド
.
だれか、簡単で簡潔な例を教えてください。
std::promise
が必要であり、それが最も慣用的な解決策である場合はどうでしょうか?
どのように解決するのですか?
futures.state]の言葉を借りれば
std::future
は
非同期リターンオブジェクト
("共有状態から結果を読み取るオブジェクト")と
std::promise
は
非同期プロバイダ
("an object that provides result to a shared state") すなわち、プロミスは、あなたが
セット
を実行し、その結果
得る
を関連する未来から取得します。
非同期プロバイダは、フューチャーが参照する共有ステートを最初に作成するものです。
std::promise
は、非同期プロバイダの一種です。
std::packaged_task
は別のもので、その内部詳細については
std::async
は別のものです。 それぞれが共有状態を作り出し、あなたに
std::future
その状態を共有し、状態を準備することができます。
std::async
は、非同期結果オブジェクトを提供し、内部で非同期プロバイダの作成とタスク完了時の共有状態の準備の面倒を見る、より高レベルの便利なユーティリティです。これをエミュレートするには
std::packaged_task
(または
std::bind
と
std::promise
) と
std::thread
を使うのが安全で簡単です。
std::async
.
std::promise
は少し低レベルで、非同期の結果を future に渡したいときのためのものですが、結果を準備するためのコードは
std::async
. 例えば、いくつかの
promise
と関連する
future
のような、複数の計算を行い、それぞれのプロミスで結果をセットするスレッドを1つ持っています。
async
では1つの結果しか返せないので、複数の結果を返したい場合は
async
を複数回実行し、リソースを浪費する可能性があります。
関連
-
[解決済み】Visual Studio 2015で「非標準の構文。'&'を使用してメンバーへのポインターを作成します」エラー
-
[解決済み】変数 '' を抽象型 '' と宣言できない。
-
[解決済み] explicit キーワードの意味は?
-
[解決済み] using namespace std;」はなぜバッドプラクティスだと言われるのですか?
-
[解決済み] C++11では、標準化されたメモリモデルが導入されました。その意味するところは?そして、C++プログラミングにどのような影響を与えるのでしょうか?
-
[解決済み] スマートポインターとは何ですか?
-
[解決済み] ムーブセマンティクスとは何ですか?
-
[解決済み] インライン名前空間は何のためにあるのですか?
-
[解決済み】C/C++の"-->"演算子とは何ですか?
-
[解決済み】C++11のラムダ式って何?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】C++でint型に無限大を設定する
-
[解決済み】C++ 非推奨の文字列定数から「char*」への変換について
-
[解決済み】C++のGetlineの問題(オーバーロードされた関数 "getline "のインスタンスがない
-
[解決済み】 != と =! の違いと例(C++の場合)
-
[解決済み】IntelliSense:オブジェクトに、メンバー関数と互換性のない型修飾子がある
-
[解決済み】「corrupted size vs. prev_size」glibc エラーを理解する。
-
[解決済み】デバッグアサーションに失敗しました。C++のベクトル添え字が範囲外
-
[解決済み】エラー:free(): 次のサイズが無効です(fast)。
-
[解決済み】C++ - 適切なデフォルトコンストラクタがない [重複]。
-
[解決済み] 未来と約束