【C#】CPUのコア数を取得する方法
関連記事
なんと!今週の土曜日も仕事してますた.来週の土曜日も仕事臭い.TCPソケット通信をゴリゴリ書いてる 【2025年08月30日(土)】
- 【ChatGPT o4】祝日なのに仕事ーバテすぎー今夜こそ絶命だーモルモルモル 【2025年03月20日(木)】
- 【#CSharp】制御系が動き出したべ 【2025年02月20日(木)】
- 【#CSharp】ひっさしぶりにガッツリなC#案件をやっているぞー 【2025年02月19日(水)】
- 今週もひたすらモノ書き #JAVA 祭りがまだまだ続く そろそろC#を書かせろー 【2024年12月04日(水)】
最近は,弊社リリースのアプリ,マルチスレッドを無意味に多用してたりして?
理想は,コア数と同じ処理スレッド数にするのが,一番効率いいはず
C#なんで,VM関連のバック処理で何本もスレッドが立ち上がってはおるが
んじゃぁ~ってことで,コア数を取ってくる方法を...
と探してみて,行き着いたのが,こちら
マネージドコードでCPUのコア数を知りたい @ MSDNフォーラム
ところが,これ,どうもXPだとちゃんとした値が取れないみたい...
途方にくれて,Win32情報関連辺りを,うろうろさまよっていたら...
Calling API functions using C# @ The Code Project
こちらのページに行き着いて
なんのことはない,Win32の GetSystemInfo() を叩けばいいらしい
SYSTEM_INFO構造体を受け取って
dwNumberOfProcessorsメンバーにコア数が入っているとのこと
ってことで,C#でちょろっと書いてみた
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Runtime.InteropServices; namespace CpuCoreCount { public partial class Form1 : Form { [DllImport("kernel32")] static extern void GetSystemInfo(ref SYSTEM_INFO ptmpsi); [StructLayout(LayoutKind.Sequential)] public struct SYSTEM_INFO { public uint dwOemId; public uint dwPageSize; public uint lpMinimumApplicationAddress; public uint lpMaximumApplicationAddress; public uint dwActiveProcessorMask; public uint dwNumberOfProcessors; public uint dwProcessorType; public uint dwAllocationGranularity; public uint dwProcessorLevel; public uint dwProcessorRevision; } public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { SYSTEM_INFO sysInfo = new SYSTEM_INFO(); GetSystemInfo(ref sysInfo); label1.Text = sysInfo.dwNumberOfProcessors.ToString(); } } }うちのクアッド様@Q6600は,ちゃんと4個
テストサーバのPentium Dualは,2個を返してきましたです 🙂
コメント
【霧島山】新燃岳が噴火 噴煙高度火口上5500m(25/8/28)
日産「GT-R」生産終了 スポーツカーの開発環境 厳しさ増す
火球か?隕石か?「夜なのに明るく」「カメラが真っ白になるほどの光」九州や西日本各地で目撃あいつぐ 空気の振動も観測
ひょっとして,大規模にやらかしてました?ぎんゆぅ~さん,落ちてた模様(爆
【津波】宮崎県沿岸に若干の海面変動予報(25/8/17)
【特別警報】熊本県に大雨特別警報 発令 九州の高速道路も通行止め(25/8/11)
暑くて伸びてた(爆 酷暑すぎる!