如何获得任务并行库使用的最大并行度?

Sya*_*hya 5 c# parallel-processing multithreading task-parallel-library

我想使用Parallel.invoke.如果我分配20个并行任务,则只有8个并发运行.我的CPU是http://ark.intel.com/products/47925,并且报告的线程数是8.我假设可以并行运行的任务数与线程的cpu数有关.我不想创建比线程数更多的任务.我怎么知道c#中的线程数?我尝试查询ParallelOptions.MaxDegreeOfParallelism,我得到的只是-1.

hsu*_*324 6

并行任务基本上是可以共享的线程.由于活动线程的数量受可用逻辑处理器核心数量的限制,因此一个好的猜测就是获取程序可用的逻辑核心数量.

Environment.ProcessorCount
Run Code Online (Sandbox Code Playgroud)

  • @publicENEMY逻辑核心和线程非常不同。您的应用程序中可以有多个线程(远远多于内核数),但是所有给定时间在所有应用程序中正在运行的线程总数受逻辑处理器数量的限制。 (2认同)