IO를 포함하지 않는 2 개의 작업이 있다고 가정합니다 (다중 프로세서 시스템에서). 이 경우 스레드가 Async를 능가합니다. 단일 스레드 프로그램과 같은 Async는 작업을 순서대로 실행하기 때문입니다. 그러나 스레드는 두 작업을 동시에 실행할 수 있습니다.
IO (다중 프로세서 시스템에서)와 관련된 2 개의 작업이 있다고 가정합니다. 이 경우 Async와 Threads는 거의 동일하게 수행됩니다 (성능은 코어 수, 스케줄링, 작업이 얼마나 많은 프로세스를 집중하는지 등에 따라 달라질 수 있습니다). 또한 Async는 리소스 양이 적고 오버 헤드가 적으며 다중 스레드 프로그램을 프로그래밍하는 데 덜 복잡합니다.
어떻게 작동합니까? Thread 1은 Task 1을 실행하는데, IO를 기다리고 있기 때문에 IO Waiting Queue로 이동합니다. 마찬가지로 스레드 2는 작업 2를 실행합니다. IO도 포함되어 있으므로 IO 대기 대기열로 이동합니다. IO 요청이 해결 되 자마자 스케줄러가 실행을 위해 스레드를 예약 할 수 있도록 준비 대기열로 이동합니다.
Async는 작업 1을 실행하고 IO가 완료 될 때까지 기다리지 않고 작업 2를 계속 한 다음 두 작업의 IO가 완료 될 때까지 기다립니다. IO 완료 순서대로 작업을 완료합니다.
웹 서비스 호출, 데이터베이스 쿼리 호출 등을 포함하는 작업에 가장 적합한 비동기, 프로세스 집약적 인 작업을위한 스레드.
아래 비디오는 https://www.youtube.com/watch?v=kdzL3r-yJZY에 대해 설명 Async vs Threaded model
하고 언제 사용 해야하는지 설명합니다 .
이것이 도움이되기를 바랍니다.