2010-05-27 4 views
0

다음은 I/O 핸들을 스레드 풀과 연결해야하지만 주어진 예제에서 핸들이 스레드와 관련이있는 부분을 찾을 수 없다고합니다. 이 예제에서 파일 핸들을 바인딩하는 데 도움이되는 함수 또는 코드는 무엇입니까?입출력 비동기 완료

비동기 I/O 완료 이벤트를 사용하면 스레드 풀의 스레드는 데이터를 수신 할 때만 데이터를 처리하고 데이터가 처리되면 스레드는 스레드 풀로 돌아갑니다. 비동기 I/O 호출을 만들려면 운영 체제 I/O 핸들을 스레드 풀과 연결해야하며 콜백 메서드를 지정해야합니다. I/O 작업이 완료되면 스레드 풀의 스레드가 콜백 메서드를 호출합니다. 해당 페이지의 C# 예제에서 http://msdn.microsoft.com/en-us/library/aa720215(VS.71).aspx

답변

0

, 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 완료와 연관시키는 것입니다.