CLR是否在内部产生线程以响应计时器事件?

问题描述

| 汉斯和我最近就该主题进行了少量讨论,我很好奇它是如何实现的。 请参阅以下注释中的初始讨论:c#计时器是否自然是多线程的?     

解决方法

        盯着.Net 4.0参考源,ѭ0似乎使用ѭ1来处理实际的实现细节。后者通过调用
AddTimerNative
生成定时器。
AddTimerNative
是内部呼叫。 谷歌搜索
AddTimerNative
会产生很多有趣的结果,包括威利·德诺伊特(Willy Denoyette)的评论,他在评论中称其为CreateTimerQueueTimer。 该页面指出“回调函数已排队到线程池中。”     ,        好吧,我做了一些调查...详细信息在我的博客文章中 简而言之,仅从此处进行总结: 至于SSCLI20,汉斯是完全正确的。真正有单独的线程来处理APC和排队的计时器。谢谢您的坚持,顺便说一句。我有机会挖掘一些有趣的东西:) 在较新的系统上,仍然可以在没有其他线程的情况下实现它。我只是错误地假设编写CLR 2.0时它已经存在。有关详细信息,请参见CreateThreadpoolTimer,SetThreadpoolTimer和CloseThreadpoolTimer。