Giả sử bạn có 2 tác vụ không liên quan đến bất kỳ IO nào (trên máy đa xử lý). Trong trường hợp này, các luồng hoạt động tốt hơn Async. Bởi vì Async giống như một chương trình đơn luồng thực thi các tác vụ của bạn theo thứ tự. Nhưng các luồng có thể thực hiện đồng thời cả hai tác vụ.
Giả sử bạn có 2 nhiệm vụ, liên quan đến IO (trên máy đa xử lý). Trong trường hợp này, cả Async và Threads đều hoạt động ít nhiều giống nhau (hiệu suất có thể thay đổi dựa trên số lượng lõi, lập lịch, mức độ chuyên sâu của quy trình mà tác vụ thực hiện, v.v.). Ngoài ra Async chiếm ít tài nguyên hơn, chi phí thấp và ít phức tạp hơn để lập trình qua chương trình đa luồng.
Làm thế nào nó hoạt động? Luồng 1 thực hiện Nhiệm vụ 1, vì nó đang đợi IO, nó được chuyển đến Hàng đợi IO. Tương tự, Luồng 2 thực hiện Nhiệm vụ 2, vì nó cũng liên quan đến IO nên nó được chuyển đến Hàng đợi IO. Ngay sau khi yêu cầu IO của nó được giải quyết, nó sẽ được chuyển đến hàng đợi sẵn sàng để bộ lập lịch có thể lên lịch cho luồng thực thi.
Async thực hiện Nhiệm vụ 1 và không đợi IO của nó hoàn thành, nó tiếp tục với Nhiệm vụ 2 sau đó nó đợi IO của cả hai nhiệm vụ hoàn thành. Nó hoàn thành các nhiệm vụ theo thứ tự hoàn thành IO.
Không đồng bộ phù hợp nhất cho các tác vụ liên quan đến cuộc gọi dịch vụ Web, cuộc gọi truy vấn cơ sở dữ liệu, v.v., Chủ đề cho các tác vụ quy trình chuyên sâu.
Video dưới đây giải thích về Async vs Threaded model
và cũng như thời điểm sử dụng, v.v.,
https://www.youtube.com/watch?v=kdzL3r-yJZY
Hy vọng điều này là hữu ích.