ソフトウェアが使用するCPUコアの数を顧客が支払うソフトウェアを書く場合、C++コードでこれを実現する最も良い方法は何でしょうか?私の研究はこれまで、WindowsではSetProcessAffinityMask
、POSIXシステムではsched_setaffinity
を使用しました。C++でプロセスコアのクォータを設定する
答えて
私はあなたが最良の選択肢を見つけたと思います。マルチスレッドプロセッサの機能を利用したい場合は、スレッド数を制限することはお勧めできません。
「お客様がCPUコアの数を支払う場所」は、すでにお客様が支払っていない限り、これらの機能を利用したくないことを意味しています。 – MSalters
これは興味深い質問です。私は完璧な解決策はないと思っていますが、これまでに何の反応もなかったので、次のように提案してください:
あなたのプログラムのメインチャンクは、顧客のライセンスよりも多くのワーカースレッドを生成します。 1つのスレッドを複数のコア上で実行するように分割することはできないため、ハード制限が課されます。
(私はCPUの親和性を設定するのが実行時に簡単に変更できるとは思っていませんが、リバースエンジニアリングやシステムの永続的な変更を必要としないので、正直な顧客でさえそれを試してしまうのを防ぐのに「悪い」と感じることはありません)。
スレッドクォータを設定することもできます。実行時にプロセスアフィニティを変更する人には、 'GetProcessAffinityMask'で親和性をチェックし、最初に' main'で設定してから変更があればライセンス例外(exit)をスローすると思っていました。 –
- 1. WCF:MaxReceivedMessageSizeクォータを設定する方法
- 2. WCF readerクォータ設定 - 欠点?
- 3. Big Queryでサービスアカウントのクォータ制限を設定する
- 4. コグニティブ・サービスAPIコールのクォータ・リミットを設定できますか?
- 5. python-openstacksdkを使ってopenstackプロジェクト/テナントのクォータを設定する方法
- 6. Mosquittoの設定プロパティをC++で設定する方法は?
- 7. C#でdatagridviewのアルファを設定する
- 8. Appengineのクォータ制限の課金が有効に設定されています
- 9. C++コードでプロキシ設定を設定
- 10. C#特定のident設定をXmlWriterSettingsに設定する
- 11. notes apiを使用してibm dominoで登録ユーザーのメール・クォータ・サイズを設定する方法
- 12. CFで組織クォータを管理する
- 13. CMakeでパスを設定する(C++、ImageMagick)
- 14. C#でマイク音量を設定する
- 15. C#アプリケーションで3DCart APIを設定する
- 16. C#でタイムアウトを設定するには
- 17. C#でシステムプロパティを設定する方法
- 18. C++でデバッグモードを設定するには
- 19. Visual Studio(C++)でブレークポイントを設定する
- 20. Cでselect()とwrite_fdsを設定する
- 21. C#でエンコーディングを設定するには?
- 22. Cでスタイルを設定するには?
- 23. Cで設定ファイルを更新する
- 24. C#ツールでIPを設定する
- 25. C#でスライダ値を設定する
- 26. CキーボードでUSBキーボードステータスを設定する
- 27. Azureバッチアカウントのクォータ
- 28. ovirtsdkを使用したクォータIDによるクォータ
- 29. 設定エラーC#アプリケーション設定
- 30. C#のページ設定オプションを設定するExcelレポート
あなたの質問のために真と詳細な回答: [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 –