ソフトウェアが使用する CPU コアの数に対して顧客が支払うソフトウェアを作成する場合、C++ コードでこれを実現する最善の方法は何でしょうか? これまでの調査によりSetProcessAffinityMask
、Windows とsched_setaffinity
POSIX システムで使用するようになりました。
2 に答える
2
それは興味深い質問です。私は完全な解決策を持っているとは思いませんが、これまでに応答がなかったため、次のことを提案させてください。
プログラムの主な作業が 1 つのタイプのスレッドによって行われる場合は、顧客のライセンスで許可されているよりも多くのワーカー スレッドを生成しないでください。1 つのスレッドを分割して複数のコアで実行することはできないため、ハード リミットが課せられます。
(実行時に簡単に変更できるため、プロセスのCPUアフィニティを設定する方法はないと思います。リバースエンジニアリングやシステムへの永続的な変更は必要ないため、これを回避しても問題が解決しないのではないかと心配しています。正直な顧客でさえそれを試すのを妨げるほど「悪い」と感じます。)
于 2013-02-26T02:04:55.657 に答える
0
私はあなたが最良の選択肢を見つけたと思います。マルチスレッドプロセッサの機能を利用したい場合は、スレッド数を制限することはお勧めできません。
于 2013-03-14T15:39:33.170 に答える