Windows服务和计时器 - 单独的进程?

时间:2009-06-27 01:24:05

标签: multithreading timer

多个计时器与多个线程有什么区别?

我有一个在后台运行的Windows服务。数据库中有大约十个“站点”在init上加载。每个站点都在其自己的Timer对象中初始化,然后Timer在每个站点的间隔内执行代码。执行的代码来自主服务类中的静态方法。

当两个计时器同时执行时会发生什么?他们是在同一个过程中执行的吗?第二个计时器是否必须等待第一个计时器退出方法才能输入?是否有任何锁定或竞争条件需要担心?

感谢您的见解。

2 个答案:

答案 0 :(得分:0)

我将假设这是一个.NET问题。

计时器使用应用程序线程池中的共享线程。

多个计时器回调将同时执行,除非线程池已用尽线程。

将此与使用专用线程进行比较。专用线程将始终可用于执行代码,但它们会占用资源,因为它们不像池中的线程那样共享。

答案 1 :(得分:0)

首先我认为你需要意识到线程和进程之间存在差异,快速谷歌想出了这个

http://www.dotnetuncle.com/Difference/146_thread_process.aspx

然后在堆栈溢出内就是这个队列

Do .NET Timers Run Asynchronously?

所以,

他们自己的线程上的定时器不必等待其他定时器在它们可以运行之前退出,因为这类似于任何多线程,你需要考虑锁定多个定时器使用的任何资源,并且有可能竞争条件。