問題タブ [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.

0 投票する
1 に答える
4673 参照

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 を使用してコンパイルされています)

0 投票する
5 に答える
33996 参照

c++ - 将来の制限を待たずに std::async を使用できますか?

高レベル
非同期モードで戻り値のないいくつかの関数を、関数が終了するのを待たずに呼び出したいと考えています。std::async を使用すると、将来のオブジェクトはタスクが終了するまで破棄されません。これにより、私の場合、呼び出しが同期されなくなります。

私の質問は

  1. この制限を克服する方法はありますか?
  2. (1) が「いいえ」の場合、これらの「ゾンビ」先物を受け取り、それらを待機するスレッドを一度実装する必要がありますか?
  3. (1) と (2) はいいえですか? 独自のスレッドプールを構築するだけの他のオプションはありますか?

注:
新しいスレッドの作成には回避したいオーバーヘッドがあるため、thread + detach(@galop1nが推奨)のオプションは使用しません。std::async を使用している間 (少なくとも MSVC では)、内部スレッド プールを使用しています。

ありがとう。

0 投票する
1 に答える
876 参照

c++ - std::async での奇妙な動作

次のサンプル コードを検討してください。

GCC 4.6.3 はこれを問題なくコンパイルします。ただし、これは実行時に次のように失敗します。

ただし、GCC 4.8.2 はファイルのコンパイルを拒否します。

これは libstdc++ の問題のようです。

したがって、私の質問は次のとおりです。1-GCCはこのコードを拒否する必要がありますか、それとも標準に私が知らない何かがありますか。2 - アサーションは失敗しますか? 予想される動作は、同じ参照を取る非同期関数が同じオブジェクトを参照する必要があることですが、コピーが非同期タスクに対してローカルに作成されているようです。

clang でコンパイルしようとしましたが、4.8.2 と同じコンパイル エラーの問題があり (同じ libstdc++ を共有しているため)、4.6.3 ライブラリ ヘッダーをコンパイルできません。

0 投票する
4 に答える
59105 参照

c++ - std::async と std::threads をいつ使用するか?

それぞれをいつ使用するかについて、誰でも高レベルの直感を与えることができますか?

参考文献:

0 投票する
2 に答える
2711 参照

c++ - テンプレート関数で std::async を使用する

テンプレート関数を非同期に渡すにはどうすればよいですか?

コードは次のとおりです。

エラーメッセージは次のとおりです。

0 投票する
1 に答える
611 参照

c++ - std::async に変数を渡すにはどうすればよいですか?

そのような非同期呼び出しにベクトルを渡すにはどうすればよいですか??

0 投票する
2 に答える
2001 参照

c++ - オーバーロードされた関数を持つ std::async

重複の可能性:

std::bind オーバーロード解決

次の C++ の例を検討してください

これにより 'std::async' が得られます: 関数の引数があいまいなため、テンプレートの引数を推測できません。このあいまいさを解決するにはどうすればよいですか??