我有自己的TaskScheduler
实现。它存在的主要原因是它将处理器核心亲和力设置为运行我的任务的线程。
当我以下列方式使用它时:
var myTaskSceduler = new MyTaskScheduler(4);
var taskFactory = new TaskFactory(myTaskSceduler);
taskFactory.StartNew(DoSomething);
亲和力工作正常,任务将仅在指定的核心上运行。
如何更改Task.Factory
或Task.Factory.Scheduler
,以便每当
Task.Factory.StartNew()
正在被召唤?
答案 0 :(得分:0)
为什么不创建自己的静态方法MyTask.StartNew()
?你不必将亲和力指定为参数吗?
在任何情况下,任务工厂都应使用您拨打StartNew
时所处的同一个计划程序。因此,如果您在正确的调度程序上执行任务,它应该可以正常工作。这实际上取决于你如何处理你的处理安排等,但我认为如果你不打算在任何地方传递亲和力,你将依赖于上下文。