Câu trả lời của Ned khá tốt, vì vậy tôi sẽ không lặp lại những gì anh ấy nói (mặc dù lưu ý rằng phí trên không nhất thiết phải lớn so với chi phí hoạt động I/O).
Một lý do quan trọng nữa để cung cấp các phương thức đồng bộ thực sự rõ ràng trong tầm nhìn - mọi người gặp khó khăn nghiêm trọng khi hiểu các hoạt động không đồng bộ. Chúng được sử dụng để làm "Đọc, sau đó viết, sau đó đọc lại ..." Lỗi xử lý, lỗi địa phương, đồng bộ hóa ... tất cả có thể rất khó khăn rất dễ dàng, đặc biệt là nếu bạn không thể sử dụng await
.
Sự thật là, trong khi nó sẽ rất tốt đẹp nếu mọi thứ trở nên không đồng bộ theo thời gian, sẽ khó hơn nhiều để giải thích về các ứng dụng không đồng bộ. Nó vẫn còn tốt hơn so với làm đa luồng, nhưng không phải bởi một toàn bộ rất nhiều.
Bằng cách này, việc sử dụng các phương pháp không đồng bộ có thể được xem là tối ưu hóa - và bạn không thực hiện tối ưu hóa trừ khi bạn biết chúng sẽ giúp đáng kể. Đối với một thư viện, điều này là khó khăn để quyết định - do đó cung cấp cả hai tùy chọn. Người nào đó viết một máy chủ thông lượng cao sẽ thực hiện việc chăm sóc cần thiết để viết một ứng dụng không đồng bộ có hiệu suất và đáng tin cậy. Một người nào đó chỉ cần viết một CMS đơn giản, ví dụ, có thể muốn tránh nó hoàn toàn.
này áp dụng đặc biệt cho C#/NET dưới 4.5 -. Thử làm xử lý trên continuations không đồng bộ lỗi không await
, và bạn sẽ thấy những gì tôi đang nói về :)
đang Giữ đơn giản là rất quan trọng. Nó làm giảm chi phí phát triển và bảo trì đáng kể, và làm cho nó dễ hiểu hơn cho người mới đến.
Tôi cho rằng đây là một chút ý kiến (vì nếu bạn chỉ quá tải chúng bằng cách chờ đợi trong quá trình thực hiện của bạn hơn là không có gì có thể đạt được) nhưng tôi sẽ bao gồm những thứ đó - không cần buộc người dùng của bạn không đồng bộ nếu anh ta không muốn (không có vấn đề nếu lý do của mình là tốt hay xấu) - nhưng đây chỉ là ý kiến * của tôi * (node.js mọi người sẽ có một hoàn toàn khác nhau) - đây là lý do tại sao câu hỏi của bạn có thể bị đóng sớm - có thể không có câu trả lời tốt – Carsten
I đừng nghĩ rằng đó chỉ là vấn đề của ý kiến ... Tôi chắc chắn có một số loại hướng dẫn hoặc thực hành tốt nhất ở đâu đó. Sau đó, một lần nữa thực hành tốt nhất là một ý kiến, vì vậy có lẽ chúng ta không nên yêu cầu thực hành tốt nhất trên Stack Overflow? – Gigi
@Gigi có lẽ bạn nên hỏi * điều này * trên Meta;) - Tôi chỉ muốn cung cấp cho bạn một gợi ý tại sao bạn có 2 lá cờ gần ngay bây giờ - không phải để tranh luận – Carsten