获取CPU数量的方法-IOCP模型线程数配置

完成端口模型里的线程数该怎么设?用GetSystemInfo拿 CPU 数量挺靠谱的。像这样:

SYSTEM_INFO sysinfo;
GetSystemInfo(&sysinfo);
int CPUnumber = sysinfo.dwNumberOfProcessors;
HANDLE CompletionPort = CreateIoCompletionPort(INVALID_HANDLE_VALUE, NULL, 0, CPUnumber * 2 + 2);

通过sysinfo.dwNumberOfProcessors获取 CPU 核数,乘个系数,线程数就基本稳了。乘 2 再加 2 这个值也挺常见的,够灵活,能顶高并发。

适合在写IOCP模型时直接上手用,比如搞高性能 Socket 通信、写服务器端程序什么的,用这个方法配置线程数还蛮省心。

有几个参考文章也挺值得一看:

如果你也在用完成端口模型网络 IO,这段配置可以直接抄回去用。代码简单,响应也快,蛮推荐的。

ppt 文件大小:113KB