I/O异步完成

问题描述:

在下面,它说I/O句柄必须与线程池关联,但我找不到在给定示例中句柄与线程关联的位置。 哪个函数或代码有助于绑定该示例中的文件句柄?I/O异步完成

使用异步I/O完成事件,线程池中的线程仅在接收到数据时处理数据,并且一旦数据处理完毕,线程就返回到线程池。 要进行异步I/O调用,操作系统I/O句柄必须与线程池相关联,并且必须指定回调方法。当I/O操作完成时,线程池中的线程会调用回调方法。 http://msdn.microsoft.com/en-us/library/aa720215(VS.71).aspx

在该网页上的C#示例,在ProcessImagesInBulk,你会看到以下内容:

AsyncCallback readImageCallback = new AsyncCallback(ReadInImageCallback); 
    for(int i=0; i<numImages; i++) 
    { 
    ... 
    fs.BeginRead(state.pixels, 0, numPixels, readImageCallback, state); 
    } 

在这种情况下,FileStream.BeginRead电话是什么是启动异步I/O。回读参数(这里是:readImageCallback)是读取完成时调用的参数。

句柄与线程的绑定在库代码后面被抽象出来。我不知道为什么那篇文章甚至提到它。在.NET的情况下,回调在.NET ThreadPool上调用,这是将线程与I/O完成相关联的东西。