다음을 통해 공유


비동기 작업

애플리케이션이 인터넷 리소스에 액세스하는 데 걸리는 시간은 사용 중인 연결, 리소스가 있는 서버 및 리소스에 액세스하려는 사용자 수와 같은 다양한 요인에 따라 달라집니다. 여러 리소스를 다운로드하거나 여러 작업(하나 이상의 다운로드 포함)을 처리하는 애플리케이션의 경우 다음 작업으로 이동하기 전에 각 다운로드가 완료될 때까지 기다리는 것은 매우 비효율적일 수 있습니다. 애플리케이션에서 대기해야 하는 시간을 줄이기 위해 많은 WinINet 함수가 비동기적으로 작동할 수 있습니다.

비동기 모드에서 애플리케이션은 컨텍스트 값을 매개 변수 중 하나로 포함하는 모든 함수를 실행할 수 있으며, 애플리케이션이 함수가 작업을 완료할 때까지 기다리는 동안 다른 명령이나 함수를 계속 실행할 수 있습니다. 작업이 완료되는 동안 애플리케이션에서 제공하는 상태 콜백 함수는 작업의 진행 상황과 완료 시기에 대한 알림을 받습니다. 이때 상태 콜백 함수는 다른 함수를 호출하거나 작업의 완료에 종속된 다른 필수 작업을 수행할 수 있습니다.

WinINet을 비동기적으로 호출할 때 콜백 스레드 무한대는 없습니다. 한 스레드에서 호출이 시작될 수 있지만 다른 스레드는 콜백을 받을 수 있습니다.

이점

비동기적으로 작동하면 몇 가지 이점이 있습니다. 예시:

  • 여러 인터넷 리소스를 동시에 다운로드합니다.

    여러 인터넷 리소스에 동시에 연결하여 사용할 수 있게 되면 다운로드할 수 있습니다.

  • 애플리케이션의 성능 향상

    WinINet 함수를 사용하는 애플리케이션은 요청이 완료될 때까지 비동기적으로 기다릴 필요가 없으므로 애플리케이션은 요청에 종속되지 않는 다른 작업을 자유롭게 수행할 수 있으므로 애플리케이션의 전반적인 성능이 향상됩니다.

  • 다운로드 진행률을 모니터링합니다.

    상태 콜백 함수는 요청을 처리하는 동안 알림을 받습니다. 필요한 경우 애플리케이션은 해당 상태 콜백 함수에서 제공하는 정보를 사용하여 사용자에게 작업 진행 상황을 알리거나 완료하는 데 너무 오래 걸리는 요청을 중단할 수 있습니다.

시나리오

애플리케이션이 Downfall Coffee & Tea 및 Fourth Coffee 사이트에서 커피 가격을 다운로드하고 가격을 비교해야 한다고 가정해 보겠습니다. Fourth Coffee 사이트는 일반적으로 응답 시간이 느리므로 애플리케이션은 먼저 Downfall Coffee & Tea에서 정보를 다운로드해야 합니다.

두 가지 버전의 애플리케이션이 개발되었습니다. 하나는 동기적으로 작동, 먼저 다운 폴 커피 & 티 사이트에서 가격을 다운로드 한 다음 네 번째 커피 사이트에서 가격. 두 번째는 비동기적으로 작동하여 두 사이트에 요청을 보내고 사용 가능해지면 가격을 다운로드합니다.

다음 표에서는 특정 날짜에 Fourth Coffee 사이트가 더 빠른 경우 어떤 일이 발생하는지 보여 줍니다.

이벤트 동기 버전 비동기 버전
시작 Downfall Coffee & Tea에 요청 보내기 다운폴 커피 & 차와 네 번째 커피에 요청 보내기
비동기 버전에서 Fourth Coffee로 요청 완료됨 대기 Fourth Coffee에서 가격 다운로드
다운폴 커피 & 티에 대한 요청 완료 다운폴 커피 & 티에서 가격 다운로드 다운폴 커피 & 티에서 가격 다운로드
다운 폴 커피와 차의 가격이 다운로드 된 후 Fourth Coffee에 요청 보내기 가격 비교
비동기 버전의 비교 완료 대기 작업 완료
동기 버전에서 Fourth Coffee로 요청 완료됨 Fourth Coffee에서 가격 다운로드 해당 없음
네 번째 커피의 가격이 다운로드 된 후 가격 비교 해당 없음
동기 버전의 비교가 완료됨 작업 완료 해당 없음

 

또 다른 예로 Microsoft Internet Explorer와 같은 웹 브라우저가 있습니다. 브라우저에서 페이지를 다운로드할 때 이미지 및 사운드 파일과 같은 다른 리소스를 다운로드해야 하는 경우가 많습니다. 비동기 모드에서는 페이지와 각 리소스를 한 번에 하나씩 요청하고 다운로드하는 대신 페이지와 관련 리소스를 동시에 요청하고 사용할 수 있게 되면 다운로드할 수 있습니다.

관련 링크는 다음과 같습니다.

자습서

비동기 작업을 설정하는 데 필요한 함수

비동기적으로 사용할 수 있는 함수

참고 항목

FtpCreateDirectory, FtpRemoveDirectory, FtpSetCurrentDirectory, FtpGetCurrentDirectory, FtpDeleteFile FtpRenameFile 함수는 Internet커넥트 함수 호출에 제공된 컨텍스트 값을 사용합니다.

 

참고 항목

WinINet은 서버 구현을 지원하지 않습니다. 또한 서비스에서 사용하면 안 됩니다. 서버 구현 또는 서비스의 경우 WinHTTP(Microsoft Windows HTTP 서비스)를 사용합니다.