操作系统如何将所有内核用于我的应用程序?

jus*_*tyy 5 multicore

我有一个用柏林德尔福101写的COM.我编写了一个脚本来调用它的API(只有一个API,单线程,每个需要大约1分钟才能完成).

我使用cscript.exe(64位)运行vbs文件(我在这里使用简单的作业运行器),同时使用许多副本(因此有很多进程).

但是,我已经在许多PC(Windows 10 Pro)上进行了测试,并且观察到只有大约1个核心正在运行,尽管它有许多核心.

例如,在我的2个CPU(HPZ800 Intel Xeon X5650,每个6个核心= 12个核心)上,只使用了1个核心.

如果某些脚本提前退出,则其余的CPU使用率将得到改善,但总共不超过1个核心.

我的问题是,如何编写代码以便从多核中受益?

在此输入图像描述

jus*_*tyy 0

为了同时使用多个核心,需要多个线程。反之则不然!

要真正利用多核系统,应用程序也应该将主要处理分成多个线程。其算法需要并行化。

来源: https ://scalibq.wordpress.com/2012/06/01/multi-core-and-multi-threading/

我的 COM API 是单线程的。因此,多进程并不能让操作系统利用所有核心。正如评论中所解释的,如果每个进程只休眠 60 秒,则无法给所有核心带来麻烦。

我还有另一个具有完全多线程的 API,即使只有 1 个进程,它也可以利用所有内核。

另外,还提到如果存在 I/O 竞争或多个进程争夺相同资源,则会影响内核的利用率。

更新 我做了一些实验,结果发现单线程进程最多可以利用一个核心,但是启动多个核心可以利用所有核心,这实际上取决于操作系统来决定。详细请看我的实验Windows 什么时候可以利用所有核心?