获取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 通信、写服务器端程序什么的,用这个方法配置线程数还蛮省心。
有几个参考文章也挺值得一看:
- 完成端口的使用,讲得比较全面
- VC8 完成端口多线程,配合线程池理解会更清楚
- IOCP 简单通信实例,适合初学者练手
如果你也在用完成端口模型网络 IO,这段配置可以直接抄回去用。代码简单,响应也快,蛮推荐的。
113KB
文件大小:
评论区