:5.655KB : :1 :2022-07-25 14:32:11
在程序中利用多线程来做事可以提高效率,但不是线程数越多越好,不是无脑开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++代码翻译成了易语言的代码,代码全开源,方便帮助大家更好地写多线程。
02-05C++获取CPU时钟频率
02-02C++获取CPU ID值
12-13通过进程ID获取CPU占用率软件