从来没有人锁定核心。您将线程与核心混淆了。
在远程调用期间,线程可能(但可能不会)阻塞一分钟。但是核心并不依赖于只运行一个线程,否则现代 Windows(Windows 95 和更新版本)根本不可能工作。Windows 需要能够同时为数百个进程提供服务,并且只需一个内核。
在典型的会话中,内核每秒会挂起数十次或数百次进程的部分或全部线程,并分配每个内核执行其他操作。最终,您的线程将恢复运行——可能在同一个核心上,也可能在不同的核心上。
特别是进行远程调用的线程通常处于“等待状态”,这意味着内核在远程调用完成之前根本不会为线程分配核心。
(采取了几个近似值,但这就是它的要点)
我可以假设每个内核为 VB6 应用程序每小时提供一小时的“cpu 时间”吗?所以如果我有两个核心,我可以说这个设置每小时提供 120 分钟的“cpu 时间”吗?
不。找出进程消耗多少 cpu 时间的唯一实用方法是查看它的性能计数器。每经过一小时,它肯定会远远少于 1 小时的 CPU 时间。为了使每经过一小时的 CPU 时间接近一小时,您最终必须获得接近 100% 的 CPU 总利用率(对于 VB6 进程本身而言)。例如,在双核系统上,每个内核的 48% 左右,全部由 VB6 进程消耗,或类似的。
此外,对于像 VB6 使用的 STA 线程,添加内核对于进程运行所需的时间量(经过的时间,而不是 CPU)没有任何影响(除非多线程 COM 对象在 STA 之外完成重要工作)。
添加 CPU 内核几乎不会增加进程的有益 CPU 时间消耗,因为完成任务所需的通常 CPU 时间量不会因为附近有额外的芯片而改变。
但我认为我们都缺少一些东西。你到底想找出什么?我不知道你真正的问题是什么,但我敢打赌“cpu time”不是答案。