力C#アプリケーションを使用して単一のコアのPCをマルチコアプロセッサー
-
26-09-2019 - |
質問
こんにちはいこうという見方もあるかもしれないが変わったものを使用しているHaptek人パテプレイヤーのための私C#用などの見を言っているフォーラムではうまくいきませんとマルチコアプロセッサー私自動的にすべてのものCore2Duoノートpcでも遅れが多くようにしてい走りで、クアッドコアのデスクトップに作成されます。したヴィッセル神戸は、神戸市民の実態を調査するために自分自身、その場合、この力に自分を単一コアです。そんなことが可能なのでしょうかクライアントまで、フルのC#?よろしく!
解決
Process
変数proc
が別のプロセスのためなどProcess.GetCurrentProcess()
またはGetProcesses()
からそれを取得し、あなたが実行中のプロセスのためのGetProcessesByName()
(気にプロセスを保持している。次に:ます。
foreach(ProcessThread pt in proc.Threads)
{
pt.IdealProcessor = 0;
pt.ProcessorAffinity = (IntPtr)1;
}
IdealProcessorは、シングルコアのゼロベースのアイデンティティです。プロセッサ親和性は4は、コア2でき、そして、3はコアがゼロ可能と一つ、2コア一方を可能にするので、1はコアゼロができ、ビットマスクであるように。
私はを徹底的のこれをテストするでしょう。チャンスこれは実際には一般的に後に、すべての利点である、異なるコアを利用する能力を低下させることで、あなたのパフォーマンスを損傷することが非常に強いです。
他のヒント
は、アプリケーションがシングルスレッドの場合は、複数のコアを利用しません。しかし、カーネルがコア間の周りに糸をバンプことが可能です。私はこれがあなたのパフォーマンスの問題の原因であることを疑います。
あなたはシングルコア(いないことを確認これを保証することができた場合)までのスレッドを結びたい場合、私はそれを自分自身を使用したことがないが、、あなたは、System.Diagnostics.ProcessThread.ProcessorAffinity
プロパティをチェックアウトする場合があります。
ない可能なクライアントまで、フルのC#.もう知っています。必要なものinteropすることができる。
を使用していま複数のスレッド?ない場合-hm-ま-なんきかせています。標準UIアプリケーションを複数のコアをくれました。
基本的には、用途を用いないスレッドを作業項目を用スレッドは本質的にシングルコアます。