单个线程应用程序是否仅在一个CPU上运行

use*_*346 5 c# multithreading winforms

我正在8 CPU机器上开发单线程应用程序,当发生繁重操作时,CPU利用率如下所示:

在此输入图像描述

.NET框架是否具有将单个线程(自动)的工作划分为其他CPU的功能?

Den*_*ich 6

不能保证任何单个线程总是在同一个核心上运行.但它保证它只会同时在一个核心运行.但它可以在一个核心上运行直到上下文切换,并在上下文切换到另一个核心后恢复.您的线程获得的每个时间片可以在另一个核心上分配.


Ste*_*ary 5

单个线程应用程序是否只在一个CPU上运行?

正如其他人所说,不一定.但是,给定的线程一次只能在一个核心运行.

.net框架是否具有将工作划分为其他CPU的功能?

是..NET有Parallel类和Parallel LINQ.请注意,您必须自己划分工作(分成小块),然后.NET框架将自动处理多个线程之间的工作.


Nic*_*pat 1

.NET 垃圾收集器将在另一个线程上运行,如果您正在使用 WinForms/WPF,则 GUI 将在另一个线程上运行,操作系统将在其他线程中执行各种工作,以帮助您的单线程应用程序运行得更快。