Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 来自不同进程的线程池_.net_Performance_Threadpool_Task Parallel Library - Fatal编程技术网

.net 来自不同进程的线程池

.net 来自不同进程的线程池,.net,performance,threadpool,task-parallel-library,.net,Performance,Threadpool,Task Parallel Library,任务并行库是ThreadPool的一个很好的包装器,它确保了所有内核的最佳使用。这意味着不仅要生成线程,还要限制活动线程的数量,以避免过多的活动线程淹没系统。例如,两个并发的Parallel.ForEach()不会在8核机器上产生16个活动线程。将有8个活动线程,两个ForEach()的工作将在它们之间平衡。但这种平衡在过程层面上起作用。整个系统怎么样? 我担心使用TPL运行2个或多个CPU绑定应用程序实例时可能出现的争用。问题是:从性能的角度来看,拥有多个并发CPU绑定的应用程序可以吗?还是值

任务并行库是ThreadPool的一个很好的包装器,它确保了所有内核的最佳使用。这意味着不仅要生成线程,还要限制活动线程的数量,以避免过多的活动线程淹没系统。例如,两个并发的Parallel.ForEach()不会在8核机器上产生16个活动线程。将有8个活动线程,两个ForEach()的工作将在它们之间平衡。但这种平衡在过程层面上起作用。整个系统怎么样?
我担心使用TPL运行2个或多个CPU绑定应用程序实例时可能出现的争用。问题是:从性能的角度来看,拥有多个并发CPU绑定的应用程序可以吗?还是值得将所有逻辑移到一个进程中,并利用PTL工作平衡?

您尝试过吗?这似乎是我认为最简单的答案?创建两个CPU密集型进程并查看如何处理这些进程?不考虑其他进程中可能发生的情况。这是设计上的,操作系统的职责是确保进程之间公平地共享系统资源。与aplomb一样,一个典型的Windows安装会同时运行约1000个线程。当然,很少有人会主动地消耗cpu周期。