Đây là câu hỏi chung về các mẫu không đồng bộ trong C# .NET được mô tả trên MSDN here.Trong C# .NET, thực hiện thao tác không đồng bộ có nhất thiết phải tạo một chuỗi chặn không?
Khi chạy dài hoạt động đồng bộ cần được gọi (ví dụ: WCF, truy vấn DB, IO, v.v.) và tôi không muốn chuỗi chặn (ví dụ - GUI), điều này có nghĩa là rằng phải tồn tại một sợi khác ở đâu đó mà ngăn chặn?
Có thực hiện một đồng bộ gọi không đồng bộ nhất thiết đòi hỏi một sợi nơi nào đó để ngăn chặn?
Vì vậy, nếu tôi thực hiện 10 cuộc gọi không đồng bộ dài (thực ra là 10 cuộc gọi đồng bộ), phải có 10 chủ đề ở đó đang chờ? Hoặc là có một cơ chế để ngăn chặn 10 chủ đề bị chặn?
Trong WCF, bạn có thể tạo các phương thức Bắt đầu và Kết thúc cho một cuộc gọi WCF để làm cho nó không đồng bộ. Điều này có nghĩa là khi tôi gọi phương thức không đồng bộ này, có một luồng ở đâu đó, trên máy khách hoặc máy chủ, điều đó có chờ tôi không?
Tôi đã đọc một số bài viết về các phương pháp khác nhau để đạt được sự không đồng bộ, nhưng những bài viết này không giải thích những gì được thực hiện dưới mui xe.
Cập nhật
tôi đã thực hiện câu hỏi của tôi specifc hơn, vì tôi thêm về quan tâm đến NET. các mẫu không đồng bộ được mô tả bởi MSDN.
Cập nhật 2
tôi cải câu hỏi để được thậm chí cụ thể hơn để thực hiện cuộc gọi đồng bộ không đồng bộ.
lớn liên kết đến bài viết. Vì vậy, nó không rõ ràng nói như vậy, nhưng nó trông giống như cho các cuộc gọi async cấp thấp, điều này được thực hiện mà không cần chặn các chủ đề. Nhưng nếu bạn muốn thực hiện cuộc gọi đồng bộ không đồng bộ, thì phải tạo một chuỗi. Tôi có đúng không? – Mas
@Mas Tạo một 'Chủ đề' chỉ là một cách để làm cho nó không đồng bộ. Như đã giải thích trong Tóm tắt trong câu trả lời, có nhiều cách khác để chuyển đổi các cuộc gọi đồng bộ sang các cuộc gọi không đồng bộ. – VS1
Theo bảng, tất cả các Mẫu Async đều dựa trên các chủ đề (Nhiệm vụ cũng sử dụng các luồng trong nền). – Mas