我使用 Blackmagic 硬件和 decklink SDK 开发了一个 C# 图像采集卡。我的主程序在 MTAthread 模式下运行。
在每个新帧上,我都有一个回调函数,名为VideoInputFrameArrived()
. 我正在从此函数调用一些多线程任务,如下所示:
t1 = Task.Factory.StartNew(() => tempmatch.PictureAnalysis(x1));
t2 = Task.Factory.StartNew(() => tempmatch.PictureAnalysis(x2));
t3 = Task.Factory.StartNew(() => tempmatch.PictureAnalysis(x3));
t4 = Task.Factory.StartNew(() => tempmatch.PictureAnalysis(x4));
Task.WaitAll(t1, t2, t3, t4);
它工作正常,但我不能超过 50% 的 CPU 使用率;我的 CPU 的 4 个内核中的每一个都以 50% 的速度运行。我花了很多时间来了解发生了什么,但我还没有找到要走的路。