C#任务是否在一个核心上运行?
C#任务是否在一个核心上运行?
我有一个项目,我需要决定要创建多少个任务。 我需要创建尽可能多的计算机。 这是处理器,核心或逻辑处理器的数量,我在三个选项之间感到困惑。
任务在线程上执行。 操作系统将线程调度到核心。 核心是一个逻辑概念,与物理CPU芯片不同。
创建Environment.ProcessorCount
任务,或者更好地使用更高级别的TPL结构之一,如PLINQ或Parallel
。
如果您使用任务库(PTL),则无需担心这一点。 你可以在这里阅读更多相关信息。 简而言之:
TPL动态地扩展并发度,以最有效地使用所有可用的处理器。 另外,TPL处理工作的分区……
我们在Task周围创建了一个包装器,如下所示:
public static class PeriodicTaskFactory { public static Task Start(Action action, int intervalInMilliseconds = -1, int delayInMilliseconds = 0, int duration = -1, int maxIterations = -1, bool synchronous = false, CancellationToken cancelToken = null, TaskCreationOptions periodicTaskCreationOptions = TaskCreationOptions.None); }
然后我们这样称呼它。 在这种情况下,我们要执行的唯一工作是每1分钟调用一个方法,第一次执行时延迟1秒。
PeriodicTaskFactory.Start(() => { CdClMappingLogic.Invoke(); }, 60000, 1000, -1, -1, true)
- 分析FxCop /代码分析警告CA1506:avoidExcessiveClassCoupling
- C#I / O – System.IO.File和StreamWriter / StreamReader之间的区别
- 使用asp.net mvc 3的jquery网络摄像头插件
- 当取消选中复选框时,asp:复选框的OnCheckedChanged事件处理程序不会触发
- 如何在ObservableCollection 上执行foreach lambda表达式?
- Process.Start()和PATH环境变量
- 如何在.NET中打开记事本中的文本?
- 如何从c#刻录videoDVD?
- 在对C#.NET 3.5服务器进行DCOM调用时,如何可靠地检查客户端身份?