問題タブ [stdasync]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - std::async は std::function オブジェクトを呼び出すことができますか?
std::async を使用して std::bind で作成された関数オブジェクトを呼び出すことは可能ですか? 次のコードはコンパイルに失敗します。
エラーは次のとおりです。
'async' の呼び出しに一致する関数がありません: 候補テンプレートは無視されました: 置換の失敗 [with Fp = std:: _1::function &, Args = <>]: 'std:: _1::__invoke_ofに 'type' という名前の型がありません、 >
std::function オブジェクトで async を使用することはできませんか、それとも何か間違っていますか?
(これは Apple LLVM 5.0 コンパイラで Xcode 5 を使用してコンパイルされています)
c++ - 将来の制限を待たずに std::async を使用できますか?
高レベル
非同期モードで戻り値のないいくつかの関数を、関数が終了するのを待たずに呼び出したいと考えています。std::async を使用すると、将来のオブジェクトはタスクが終了するまで破棄されません。これにより、私の場合、呼び出しが同期されなくなります。
例
私の質問は
- この制限を克服する方法はありますか?
- (1) が「いいえ」の場合、これらの「ゾンビ」先物を受け取り、それらを待機するスレッドを一度実装する必要がありますか?
- (1) と (2) はいいえですか? 独自のスレッドプールを構築するだけの他のオプションはありますか?
注:
新しいスレッドの作成には回避したいオーバーヘッドがあるため、thread + detach(@galop1nが推奨)のオプションは使用しません。std::async を使用している間 (少なくとも MSVC では)、内部スレッド プールを使用しています。
ありがとう。
c++ - std::async での奇妙な動作
次のサンプル コードを検討してください。
GCC 4.6.3 はこれを問題なくコンパイルします。ただし、これは実行時に次のように失敗します。
ただし、GCC 4.8.2 はファイルのコンパイルを拒否します。
これは libstdc++ の問題のようです。
したがって、私の質問は次のとおりです。1-GCCはこのコードを拒否する必要がありますか、それとも標準に私が知らない何かがありますか。2 - アサーションは失敗しますか? 予想される動作は、同じ参照を取る非同期関数が同じオブジェクトを参照する必要があることですが、コピーが非同期タスクに対してローカルに作成されているようです。
clang でコンパイルしようとしましたが、4.8.2 と同じコンパイル エラーの問題があり (同じ libstdc++ を共有しているため)、4.6.3 ライブラリ ヘッダーをコンパイルできません。
c++ - std::async と std::threads をいつ使用するか?
それぞれをいつ使用するかについて、誰でも高レベルの直感を与えることができますか?
参考文献:
c++ - テンプレート関数で std::async を使用する
テンプレート関数を非同期に渡すにはどうすればよいですか?
コードは次のとおりです。
エラーメッセージは次のとおりです。
c++ - std::async に変数を渡すにはどうすればよいですか?
そのような非同期呼び出しにベクトルを渡すにはどうすればよいですか??
c++ - オーバーロードされた関数を持つ std::async
重複の可能性:
次の C++ の例を検討してください
これにより 'std::async' が得られます: 関数の引数があいまいなため、テンプレートの引数を推測できません。このあいまいさを解決するにはどうすればよいですか??