易语言资源网 - 做最全的易语言资源下载社区
精易论坛授权登录

如何获取CPU是几核心几线程   [复制链接]

    2022-03-02 15:33:45
    模块控件源码
    易语言资源网
    3516 次浏览
    来源链接

    大家都知道,在程序中利用多线程来做事可以提高效率,但不是线程数越多越好,不是无脑开100或者1000个线程,如果你真这么做了,反而效率特别低,因为CPU切换线程上下文的代价比较大。    以我电脑为例,我的CPU是8核16线程,那我程序中开的线程数最好是16个线程。

    这里教大家一个在软件界大家都比较认同的一个线程数的方法,就是如果你的线程是计算密集型,那你的线程数一般是CPU的线程数,比如我的CPU是8核16线程,最好在程序中开16个线程,如果是IO密集型,那建议开CPU线程数的2倍个线程数,比如我的CPU是8核16线程,那16×2=32,那我最好开32个线程就行了,再多就不好了。

    那如何获取当前电脑是几核心几线程呢?查了下微软官方的开发文档,就是利用GetLogicalProcessorInformation这个API来获取,然后使用SYSTEM_LOGICAL_PROCESSOR_INFORMATION这个结构体的信息来获取,不过微软官方给的源码是C++的源码,在下不才,稍微懂点C语言,所以把这个C++代码翻译成了易语言的代码,代码全开源,方便帮助大家更好地写多线程

以下是微软官方的C++代码参考:https://docs.microsoft.com/en-us/windows/win32/api/sysinfoapi/nf-sysinfoapi-getlogicalprocessorinformation

有兴趣的可以研究下




点我下载 (已有 238 次下载)

引用模块


源码文件名 模块文件名
示例.e
EC.ec


引用支持库


源码文件名 支持库文件名 支持库标识
CPU.e 系统核心支持库 5.7 d09f2340818511d396f6aaf844c7e325
示例.e 系统核心支持库 5.7 d09f2340818511d396f6aaf844c7e325


[错误报告]   上一篇:易语言-PHP中间件-保存图片添加数据库...     下一篇:小说封面图片生成...