将在C#中打开线程会阻塞CPU线程吗? [关闭]

问题描述 投票:-1回答:2
我正在使用第三方库记录多个USB摄像机...为此我将每个摄像机记录在c#中的单独线程上...问题是摄像机有时无法记录...为此我在询问是否线程可能会阻塞CPU内核,因为我的CPU是4内核4个线程...所以我的问题是:cpu内核线程是否与我们在c#中初始化的线程相关?
c# .net windows cpu-usage
2个回答
0
投票
这完全取决于您使用线程的方式。我可以想到至少3种不同的情况-1.您的cameraThread被定义为高优先级,因此(即使使用时间切片)花费99%的时间。 2.您的cameraThread与任务线程池一起运行,因此被阻塞,并被其他线程随机阻塞(资源争用)。 3.您的摄像机在后台发生的优先级较低。

0
投票
嗯,这取决于您将如何完成此任务。录制摄像机视频可能是某些第三方库提供的功能,并且lib的API可能已经需要您的UI(主)线程才能执行任务。如果您正在实现自己的低级记录API,并希望从该API接收数据,则可能需要使用以下单独的线程来运行数据获取:

Task.Run(()=> { // new thread running - your data fetching code here });

这样,您的主线程将不会被阻塞,等待新线程将产生您的相机API的结果。
© www.soinside.com 2019 - 2024. All rights reserved.