ソフトウェアが使用するCPUコアの数を顧客が支払うソフトウェアを書く場合、C++コードでこれを実現する最も良い方法は何でしょうか?私の研究はこれまで、WindowsではSetProcessAffinityMask
、POSIXシステムではsched_setaffinity
を使用しました。C++でプロセスコアのクォータを設定する
答えて
私はあなたが最良の選択肢を見つけたと思います。マルチスレッドプロセッサの機能を利用したい場合は、スレッド数を制限することはお勧めできません。
「お客様がCPUコアの数を支払う場所」は、すでにお客様が支払っていない限り、これらの機能を利用したくないことを意味しています。 – MSalters
これは興味深い質問です。私は完璧な解決策はないと思っていますが、これまでに何の反応もなかったので、次のように提案してください:
あなたのプログラムのメインチャンクは、顧客のライセンスよりも多くのワーカースレッドを生成します。 1つのスレッドを複数のコア上で実行するように分割することはできないため、ハード制限が課されます。
(私はCPUの親和性を設定するのが実行時に簡単に変更できるとは思っていませんが、リバースエンジニアリングやシステムの永続的な変更を必要としないので、正直な顧客でさえそれを試してしまうのを防ぐのに「悪い」と感じることはありません)。
スレッドクォータを設定することもできます。実行時にプロセスアフィニティを変更する人には、 'GetProcessAffinityMask'で親和性をチェックし、最初に' main'で設定してから変更があればライセンス例外(exit)をスローすると思っていました。 –
- 1. WCF:MaxReceivedMessageSizeクォータを設定する方法
- 2. WCF readerクォータ設定 - 欠点?
- 3. C#特定のident設定をXmlWriterSettingsに設定する
- 4. C#でエンコーディングを設定するには?
- 5. C#ツールでIPを設定する
- 6. Cで設定ファイルを更新する
- 7. C++でデバッグモードを設定するには
- 8. CMakeでパスを設定する(C++、ImageMagick)
- 9. C#でマイク音量を設定する
- 10. Cでスタイルを設定するには?
- 11. C#アプリケーションで3DCart APIを設定する
- 12. C#でシステムプロパティを設定する方法
- 13. Cでselect()とwrite_fdsを設定する
- 14. Visual Studio(C++)でブレークポイントを設定する
- 15. C#のページ設定オプションを設定するExcelレポート
- 16. C#コードでのビルド設定
- 17. rootユーザーのLinuxグループのクォータですか?
- 18. ドライブApiクォータ
- 19. C#:System.Windows.Forms.DataVisualization.Charting.Chart行のサイズを設定する
- 20. C#のファイルアクセス権を設定する
- 21. C++:std:main()内のメモリリークを設定する
- 22. C#のネットワーク設定を変更する
- 23. Cのネットワーク設定を変更する
- 24. WPF C#テキストブロックのフォントファミリを設定する
- 25. Cのメンバフィールドにrefを設定する
- 26. c#TextBoxのFontSizeを設定する
- 27. c#2色のテキストを設定する
- 28. CでGTK +アプリの固定ウィンドウサイズを設定する方法は?
- 29. ユーザー設定をc#
- 30. C#の設定値
あなたの質問のために真と詳細な回答: [1]:http://stackoverflow.com/a/3082553/1848929 – hakiko
@hakikoその質問がありますどのように多くのコアを見つけ出すについてです... – us2012
にWindowsでは、ジョブオブジェクトを調べる必要があります。http://msdn.microsoft.com/en-us/library/windows/desktop/ms684161(v=vs.85).aspxプロセスを制限するためにもっと多くのことができます親和性よりも。しかし、親和性を制限することもできます:http://msdn.microsoft.com/en-us/library/windows/desktop/ms686216(v=vs.85).aspx –