2010-06-20 60 views
3

在.NET中进行异步调用时,我明白这个调用是在单独的线程中解决的,因此不会阻塞进行调用的原始线程。异步线程的机制

这项工作背后的机制如何。是在每个异步调用上生成一个新线程,还是有共享异步线程来处理这些操作?如果它是一个共享线程,则在执行时执行多个异步调用。如果生成单独的线程,如果在同一时间范围内进行多次异步调用,由于线程运行太多,线程将不会遇到严重的性能问题。

回答

2

我相信这个MSDN文章应该回答你所有的问题。请注意,你的绝大多数直觉事实上是正确的。所有你需要做的就是研究细节。

Programming the Thread Pool in the .NET Framework

+0

更具体地说,异步I/O排队到作为.NET线程池一部分的I/O完成端口。完成例程由线程池线程处理。异步计算只能在线程池线程上运行。 IIRC。 :) – 2010-06-20 01:05:18

+0

@Stephan - 你确实记得正确。我觉得这篇文章一般适合这个法案,因为'ThreadPool'就是所有魔法发生的地方。 – ChaosPandion 2010-06-20 01:13:36

0

我将承担.NET框架使用其任何异步除非你专门创建和启动一个新线程自己线程池。