問題タブ [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 投票する
0 に答える
633 参照

android - std::async と std::future は iOS と Android プラットフォームでうまくスケーリングしますか?

メイン スレッドからパーティクルの更新ループを切り離したいゲーム エンジン用の 2D パーティクル システムがあります。boost::asio で実装されたスレッド プールを使用しており、すべてのタスクをいくつかの段階に分割してから、メイン スレッドで結果を結合しています。これは私にとってはうまく機能し、プールに許可した合計スレッド数の制限を保証します (これは、独自のタスクを個別に起動するすべてのパーティクル エミッターによって共有されます)。

std::async と std::future について議論している多くの記事を読みました。これは、スレッドの作成がOSによって適切に管理され、メモリが豊富なWindowsまたはLinuxタイプのシステムでは完全に合理的であるようです。しかし、スレッドの作成にコストがかかる可能性があるモバイルプラットフォームでは、この種のことについて議論することにほとんど焦点が当てられていないようです. これらのプラットフォームで作成されるスレッドの数がわからないため、特定の時間に実行される非同期呼び出しの数がわからないコンテキストで std::async に依存するのは難しいようです (それぞれが独自のスレッドを作成する場合)。スレッド)。

https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/Multithreading/CreatingThreads/CreatingThreads.html#//apple_ref/doc/uid/10000057i-CH15-SW2

マルチスレッド C++ モバイル開発の経験を持つ個人からの連絡をお待ちしています。要約すると、私の質問は次のとおりです。

それぞれ 4 つの同時非同期タスクを持つ 20 個のパーティクル エフェクトを作成すると、100 個のスレッドがそれぞれ 0.5 MB の RAM を消費することになりますか? または、async には、スレッドの作成とタスクの共有をインテリジェントにするための魔法のサポートがありますか?

あるいは、(スレッド作成ルールで明示的でない場合) 非同期がメイン スレッドを停止させ、比較的優先度の低いパーティクル エフェクトのためにゲームプレイを効果的に遅らせますか?

もしそうなら、スレッドの作成はこれらのデバイスでもう少し明確にしたいものであるように思われるので、非同期が実際にモバイルで役立つコンテキストは何ですか。

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

c++ - std::async、std::function オブジェクト、および 'callable' パラメーターを持つテンプレート

質問1。(*) での呼び出しが なしで機能するのはなぜstd::moveですか?

質問2。(*) のコードがどのように機能するかを理解していないため、2 番目の質問が発生します。async_g() によって作成された対応するスレッドが終了するまで、各変数を確実にbound_f1存続させる必要がありますか?bound_f2

質問3. (**) でマークされた行のコメントを外すとコンパイル エラーが発生するのはなぜですか?

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

c++ - このコードは正しく同期されていますか?

このコードは大丈夫かどうか疑問に思います:

同期メカニズムで保護する必要があると思いますm_aが、同僚は必要ないと言っています。

編集:私の質問を明確にするために:コンストラクターからの STORE 操作がFoo()、他のスレッドからの LOAD 操作の後に発生することを心配しています。コンパイラがこれらの命令をこの順序で実行するのを妨げているメカニズムがわかりません。

編集:熱心なコンパイラがコンストラクターをインライン化することを決定し、 CALL 操作の後に STORE 操作を遅らせることができると思いますstd::async。この場合、2 番目のスレッドはm_a、メモリにコミットされる前にアクセスできます。

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

c++ - std::launch::async ポリシーは必要ですか?

次の違いは何ですか。

この場合、pilicy std::launch::asyncを使用することの違いは何ですか?? とにかく、最初のオプションは関数を非同期的に起動しませんか??

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

c++ - コールバック関数へのポインタを適切に削除する方法。

  1. MyDll.dll を呼び出し、curl を使用してコールバック関数でデータを受信する MainProgram.exe があります。
  2. curl インスタンスを作成して curl_easy_perform を実行する CurlGetData という関数で curl をラップしました。

これが私のコードです:

GetDataAsync 関数は私のメイン プログラムから呼び出され、基本的に curl_easy_perform を呼び出し、m_curlHandler をそのコールバック関数として使用して、CurlDataCallback を呼び出します。

これはすべて正常に動作しますが、メイン プログラムが終了するたびに MyDll::StopDataAsync が呼び出され、curl データ コールバックが停止され、MyDll のデストラクタが呼び出されて m_curlHandler がクリーンアップされます。

しかし、その時点でcurlはこのコールバックをまだ終了しておらず、 m_curlHandler が削除されているためプログラムがクラッシュしますが、新しい非同期スレッドのcurlコールバックはまだそれを使用しています。

正常に終了することもありますが、curlcallback がデストラクタによって削除されたポインタにアクセスしようとするためにクラッシュすることもあります。

m_curlHandler をクリーンアップするにはどうすればよいですか? これはメイン プログラムのパフォーマンスに影響するため、待機タイムアウトを入れないようにしたいと考えています。

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

c++ - 一貫性のない結果を生成する非同期関数

非同期で実行される関数があります。残念ながら、それは時々正しい答えを吐き出すだけです. で表される値はfutures[i].get()、コードを実行するたびに変化します。私はマルチスレッドが初めてです。

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

c++ - C++11 std::async コールバック

データベースにクエリを実行し、クエリを非同期に実行するオブジェクトを実装したいと考えています。

オブジェクト B を使用してクエリを実行するオブジェクト A があるとします。A は B の executeQuery メソッドを呼び出し、他の処理を開始します。B の ExecuteQuery メソッドは非同期で、quini A に対して非ブロッキングです。クエリの結果が準備できたら、コールバックで B から A に通知して、A が準備ができたときにのみ結果を読み取れるようにしたいと思います。

C ++ 11でこのメカニズムを実装する最良の方法は何ですか?

私は std :: async で試しましたが、 std :: future で結果を読み取る代わりに、 std :: future にすでに結果が含まれているときにコールバックを受け取りたいので、呼び出しがブロッカーになるのを避けます。

ありがとうございました