I / O异步完成

时间:2010-05-27 10:39:14

标签: asynchronous

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

  

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

1 个答案:

答案 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完成相关联的。