問題タブ [std-future]

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 投票する
4 に答える
7669 参照

c++ - std::async から返された std::future が範囲外になるとハングする

std::asyncstd::futurefrom を組み合わせて使用​​していC++ 11ます。コードで実行する特定のアクティビティに time_out を強制するために使用していますが、サーバーに接続しようとすると時間かかる場合があります。

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

ほとんどの場合、問題なく動作します。多くの場合、未来はタイムアウトし、準備ができていると報告されます。しかし、私が観察している奇妙な動作はmy_future_result、スコープ外に出るとハングするため、場合によっては UI がハングすることです。my_future_result.get()メソッドを終了する直前に呼び出された場合に返されない呼び出しを繰り返すことで、これを確認しました。

どうすればこれを回避できますか? をキャンセルまたは削除または終了する方法はありstd::futureますか?

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

multithreading - 抽象基本クラス内での c++11 の std::async の使用

このようなスレッドを抽象基底クラス内で動作させないのはなぜですか? この基本クラスから派生したユーザーのために、マルチスレッドの詳細をすべて抽象化しようとしています。callbackSquaretype を返すと明確に書いたときに「「タイプ」という名前のタイプはありません」と表示される理由がわかりませんint

私が得ている奇妙なエラーは次のとおりです。

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

c++ - gcc 4.6.3 の std::async に移動された shared_ptr の use_count()

以下のコードでは、use_count()を にshared_ptr移動しstd::asyncます1


私のプラットフォームは gcc 4.6.3 を使用しており、上記のコードは次の出力 ( fun: sp.use_count() == 2)を提供します。


coliru.stacked-crooked.comでは、希望する動作が得られます ( fun: sp.use_count() == 1):


coliru がどのコンパイラを使用しているかはわかりませんが、gcc 4.6.3 よりも新しいものだと思います。

gcc 4.6.3 からコンパイラをアップグレードしなくても、希望する動作を実現する方法や回避策はありますか?

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

c++ - std::future は関連付けられた std::packaged_task の有効期間にどのように影響しますか?

std::packaged_task変数をコピーしてキャプチャするラムダを含んでいます。これstd::packaged_taskが削除されると、ラムダ内に存在する変数が破棄されると予想されますが、std::futurethisに関連付けられている を取得するstd::packaged_taskと、futureオブジェクトがラムダ内の変数の有効期間を延長することに気付きました。

例えば:

可能な出力は次のとおりです。

したがって、ラムダ内のオブジェクトの有効期間は、 のスコープによって延長されますfuture_result

行をコメントアウトするfuture_result = p_task->get_future();と、可能な出力は次のようになります。

ここでどのメカニズムが機能するのか疑問に思っていましたが、std::future関連付けられたオブジェクトを維持するリンクが含まれていますか?