我正在开发一款处理多个请求的程序,但没有一个请求占用超过50%的CPU(目前我正在使用双核)。因此,我为每个请求创建了一个线程,整个处理过程更快。处理9个请求时,单个线程持续时间为02min08s,而同时工作3个线程的时间减少到01min37s,但仍然没有使用100%的CPU,只使用了大约50%。
我该如何让我的程序充分利用处理器的能力?
编辑 这个应用程序不受IO或内存限制,它们始终保持在合理的水平。
我认为这与“双核”有关。
有一个锁定的方法调用,每个请求都使用它,但它非常快,我认为这不是问题所在。
我代码中成本更高的部分是通过COM调用dll(所有线程都调用相同的外部方法)。这个dll也没有内存或IO限制,它是一个AI识别组件,我正在对一份支票进行OCR识别,每个请求对应一份支票。
第二次编辑
很可能STA COM方法是我的问题,我联系了组件所有者以解决这个问题。