2

メイン スレッドからパーティクルの更新ループを切り離したいゲーム エンジン用の 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 には、スレッドの作成とタスクの共有をインテリジェントにするための魔法のサポートがありますか?

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

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

4

0 に答える 0