gpt4 book ai didi

.net - 使用C#中的任务并行库,每个处理器运行一个并行任务

转载 作者:行者123 更新时间:2023-12-03 13:15:40 24 4
gpt4 key购买 nike

使用任务并行库时,是否可以确保每个处理器当时只运行一个任务?如果不是,用C#做到这一点的最佳方法是什么?

注意:我这样做并不是为了提高性能,而是使每个任务的时间安排更加可靠。有关更多信息,请参见以下问题:Timing of parallel actions using the Task Parallel Library in C#

最佳答案

首先,如果您想拥有绝对可靠的时间安排,那么使用Windows和.Net并不是正确的选择。 Windows,因为它不是real-time OS,它可以根据系统中发生的其他情况为代码选择不同的时序。 .Net并不是一个很好的选择,因为由于垃圾收集器的原因,.Net具有不确定的时间安排。

但是,如果您只是想使时序更可靠,则可以做一些事情。

如果要在自己的处理器上运行每个线程,则可以手动创建Thread,然后为每个线程设置 ProcessThread.ProcessorAffinity ,但要设置getting the ProcessThread for a Thread is not that simple

如果您只是想确保所有任务立即启动(不管ThreadPool当前正在运行什么其他任务),那么您也应该创建自己的Thread

但是,如果您只想确保每个处理器最多有一个任务,则只需将 MaxDegreeOfParallelism 设置为 Environment.ProcessorCount 即可。

关于.net - 使用C#中的任务并行库,每个处理器运行一个并行任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10527746/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com