2009-04-17 5 views
1

1. Windows에서 비동기식 IO를 이해하는 방법 ?? OS가 이러한 작업을 수행하는 데 얼마나 많은 스레드를 생성 않습니다Windows에서 비동기식 io를 이해하는 방법은 무엇입니까?

WriteFile(); 
ReadFile(); 
WriteFile(); 

:

내가 쓰기 2.If는/비동기 IO를 사용하여 파일에 뭔가를 읽어?

3 개의 작업을 동시에 실행하고 멀티 스레딩 방식 으로 실행합니까, 아니면 다른 순서로 차례로 실행합니까?

는 3.can는 내가 읽거나 같은 파일을 작성?

+0

어떤 OS를 언급하고 있습니까? – Seb

+0

Windows 시스템 – Kim

답변

0

:

얼마나 많은 스레드 OS가 이러한 작업을 수행하는 을 생성합니까?

Windows 풀, iocp 등을 사용하는 경우에 따라 다릅니다. 일반적으로 결정합니다.

은 멀티 스레딩 방식으로 동시에 3 작업 실행을 수행하거나 다른 순서에 연이어 를 실행?

이것은 아키텍처에 따라 다릅니다. 싱글 코어 머신에서는 3 가지 태스크가 차례대로 실행되며 주문은 결정됩니다. 멀티 코어 머신에서는 OS가 스레드를 예약 한 방법에 따라 이들이 함께 실행될 수 있습니다.

나는 멀티 스레딩을 사용하고 각 스레드에서 같은 파일을 을 읽거나 작성하는 비동기 IO를 사용하여 3.can는? 내 지식의 부족

다른 사람이 하나 대답 할 필요가 있도록 .

Windows via C/C++ 사본을 얻으려면 비동기 IO에 매우 큰 장이 있어야합니다.

+0

IOCP 권장 사항은 코어 당 두 개의 스레드입니다. –

+0

@Blank .. : 쓰기/읽기 작업을 처리 할 때 두 스레드가 사용되며 쓰기/읽기 작업이 끝날 때 대기열에있는 항목을 처리하려면 이 대기열에 있습니까? – Kim

+0

이 답변은 완전히 목표에서 벗어난 것 같습니다. 커널의 스레드 수는 IO에 아무런 영향을 미치지 않습니다. 알고있는 것 모두가있을 수 있습니다. –

0

을 나는 당신이 사용하고있는 운영 체제에 따라 추측 IO 비동기를 사용하여 멀티 스레딩, 각 스레드를 사용합니다. 그러나 이것에 대해 걱정할 필요는 없습니다. 투명하고 코드 작성 방법에 영향을 미치지 않아야합니다.

0

표준 읽기 및 쓰기 창을 사용하는 경우 명령 줄에서 작성 중이며 사용자가 일부 입력을 기다리지 않는 한 시스템에서 즉시 쓰지 않을 수 있습니다. . 운영 체제는 작성한 내용이 최종적으로 하드 드라이브에 기록되도록하며, 사용자가 할 수있는 작업을 훨씬 더 잘 수행 할 책임이 있습니다.

이상한 비동기식 io에서 작업하는 경우 질문을 다시 포맷하십시오. 질문에 대한

2

1. Windows에서 비동기식 IO를 이해하는 방법 ??

Win32 설명서를 읽으십시오. 웹에서 검색하십시오. 여기에있는 그런 크고 광범위한 질문에 대한 답을 기대하지 마십시오.내가 쓰기 2.If

은/비동기 IO 사용하여 파일에 뭔가를 읽어

의 WriteFile을(); ReadFile(); WriteFile();

OS는 이러한 작업을 수행하기 위해 몇 개의 스레드를 생성합니까?

나는 그렇게 생각하지 않습니다. 기존 스레드 컨텍스트를 다시 사용하여 커널 함수 호출을 실행합니다. 기본적으로 OS는 작업 스케줄을 세우고 스레드를 빌려서 수행합니다. 커널 컨텍스트가 항상 동일하기 때문에 괜찮습니다.

는 3.can는 내가 멀티 스레딩을 사용하고 각 스레드에서 읽거나 같은 파일을 작성하는 비동기 IO를 사용하고 계십니까?

나는 네, 그렇게 생각합니다. 실행 순서가 제출 순서와 일치하도록 보장되는지는 모르지만 동일한 바이트 범위에서 동시 읽기/쓰기를 실행하면 예기치 않은 결과가 발생합니다.

0

Win32 프로그래밍에 대한 Jeffery Richter의 책을 찾아 보시기 바랍니다. 그들은 이런 종류의 일에 매우 잘 쓰여진 가이드입니다. 나는 그가 C#에서 더 새로운 책 (s?)을 가지고 있다고 생각한다. 그래서 틀린 책을 사지 말아라.

관련 문제