在下文中,据说I / O句柄必须与线程池相关联,但我找不到给定示例中句柄与线程关联的位置。 在该示例中哪个函数或代码有助于绑定文件句柄?
使用异步I / O完成事件,线程池中的线程仅在接收到数据时处理数据,并且一旦处理完数据,线程就会返回到线程池。 要进行异步I / O调用,必须将操作系统I / O句柄与线程池关联,并且必须指定回调方法。 I / O操作完成后,线程池中的线程将调用回调方法。 http://msdn.microsoft.com/en-us/library/aa720215(VS.71).aspx
答案 0 :(得分:0)
在该页面的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完成相关联的。