.NET 응용 프로그램, 특히 WriteFileGather에서 Overlapped IO 기능을 사용하고 싶습니다. 이것은 표준 클래스 라이브러리를 통해 지원됩니까?.NET 클래스 라이브러리에서 WriteFileGather가 지원됩니다.
보너스 포인트 : 모노로 작동합니까?
.NET 응용 프로그램, 특히 WriteFileGather에서 Overlapped IO 기능을 사용하고 싶습니다. 이것은 표준 클래스 라이브러리를 통해 지원됩니까?.NET 클래스 라이브러리에서 WriteFileGather가 지원됩니다.
보너스 포인트 : 모노로 작동합니까?
.NET BCL에는 직접 기능이 없지만 Windows I/O에서 도움이되는 몇 가지 클래스가 있습니다. 1) Overlapped 클래스의 인스턴스를 초기화합니다.
2) 콜백 콜백.
3) 결과 NativeOverlapped (Pack 반환 값)를 WriteFileGather으로 전달합니다.
4) 알다시피, 작업이 완료되면 작업자 스레드에서 콜백을 호출해야합니다.
몇 가지 요구 사항이 있으므로 WriteFileGather의 MSDN 문서를 반드시 읽으십시오. 데이터는 시스템의 페이지 경계에 정렬되어야합니다 (x86-x64의 경우 4K, Itanium의 경우 8K).
FileStream 클래스는 동기 및 비동기 읽기 및 쓰기 작업을 지원하는 스트림에서 파일을 노출합니다. 스트림에서 BeginWrite의 기본 구현은 Write 메서드를 동 기적으로 호출합니다. 즉, Write는 일부 스트림에서 차단 될 수 있습니다. 그러나 FileStream 및 NetworkStream과 같은 클래스의 인스턴스는 인스턴스가 비동기 적으로 열린 경우 비동기 작업을 완벽하게 지원합니다. 따라서 BeginWrite에 대한 호출은 해당 스트림에서 차단되지 않습니다. FileStream 클래스는 모노에서 똑같이 작동해야합니다.
비동기 메서드는 여전히 단일 버퍼를 처리합니다. Java의 GatheringByteChannel과 비슷한 것을 찾고있었습니다. –