2009-08-02 5 views

답변

1

.NET BCL에는 직접 기능이 없지만 Windows I/O에서 도움이되는 몇 가지 클래스가 있습니다. 1) Overlapped 클래스의 인스턴스를 초기화합니다.

2) 콜백 콜백.

3) 결과 NativeOverlapped (Pack 반환 값)를 WriteFileGather으로 전달합니다.

4) 알다시피, 작업이 완료되면 작업자 스레드에서 콜백을 호출해야합니다.

몇 가지 요구 사항이 있으므로 WriteFileGather의 MSDN 문서를 반드시 읽으십시오. 데이터는 시스템의 페이지 경계에 정렬되어야합니다 (x86-x64의 경우 4K, Itanium의 경우 8K).

0

FileStream 클래스는 동기 및 비동기 읽기 및 쓰기 작업을 지원하는 스트림에서 파일을 노출합니다. 스트림에서 BeginWrite의 기본 구현은 Write 메서드를 동 기적으로 호출합니다. 즉, Write는 일부 스트림에서 차단 될 수 있습니다. 그러나 FileStream 및 NetworkStream과 같은 클래스의 인스턴스는 인스턴스가 비동기 적으로 열린 경우 비동기 작업을 완벽하게 지원합니다. 따라서 BeginWrite에 대한 호출은 해당 스트림에서 차단되지 않습니다. FileStream 클래스는 모노에서 똑같이 작동해야합니다.

+0

비동기 메서드는 여전히 단일 버퍼를 처리합니다. Java의 GatheringByteChannel과 비슷한 것을 찾고있었습니다. –

관련 문제