Windows在单独的线程上重叠了IO与IO

Windows上,当你做I / O时,你可以使用OVERLAPPED选项来进行asynchronous。 这样做与在另一个线程上同步执行I / O有什么区别吗? 如果是这样,哪个更好? 操作系统只是在asynchronous情况下产生一个单独的线程,或者只是将它排队在驱动程序线程和发送信号,而不是块等待?

谢谢!

Windows I / O本质上是异步的,所以在.NET中执行一个异步操作不应该使用一个线程 ,一旦操作完成,一些现有的线程暂时借用来通知操作的完成,但是没有线程被创建。

这与在另一个线程上运行同步操作完全不同。 它使用了一个线程,使程序更加不可伸缩。 在.NET中,一个线程有一个1MB的默认本地存储,所以有数千个线程在运行将消耗千兆字节的内存。 那么你也有在线程之间切换的额外成本,通常很小,但如果你有很多的线程可以加起来。

根据MSDN开发中心的说法,“异步I / O也被称为重叠I / O”,此外它还说异步IO是由内核处理的,实际上是另一个线程。 我不知道你,但如果我不必写东西,我不…这是我的懒惰程序员规则#1。