我应该将Thread
专用于定期清理任务,还是应该使用永远无法完成的循环Task
?
因为Thread
在大多数时间都处于睡眠状态,只是偶尔唤醒一个信号进行一点清理工作,所以我认为该线程将被浪费。一个线程可能没什么大不了的,但是我可能会有数十个。
而不是创建一个通常会处于睡眠状态并消耗资源的专用Thread
,我想使用一个永久循环的Task
,在每次迭代过程中(异步)等待“唤醒”信号。
这不是“长时间运行”的任务(即不会长时间受CPU限制),但它将是“长期存在的”任务(即,它永远不会完成,通常只会被跟踪在一些等待队列中。
假设我开始了许多这些“长寿”任务。由于这些长期存在的任务仅存在,我是否会遇到这种方法的性能问题?使用Tasks管理工作并使其在ThreadPool线程上运行似乎更简单。与其他可能在ThreadPool线程上运行的工作相比,该工作不需要任何特殊的优先级。
我也不会使用。
大多数时候都在睡觉,只是偶尔醒来做一点清理工作的信号
这似乎是Timer
的完美用例。当时间流逝时,什么都不存在(线程或任务都不存在)。时间过去后,事件处理程序将运行ThreadPool线程。