Câu trả lời của Theon cung cấp một cái nhìn tổng quan hiện đại. Tôi muốn thêm một số quan điểm lịch sử.
Tony Hoare và Robert Milner đều phát triển đại số toán học để phân tích các hệ thống đồng thời (Giao tiếp các quy trình tuần tự, CSP và giao tiếp đồng thời hệ thống, CCS). Cả hai đều giống như toán học nặng cho hầu hết chúng ta nhưng ứng dụng thực tế là tương đối đơn giản. CSP dẫn trực tiếp đến ngôn ngữ lập trình Occam trong số những người khác, với Go là ví dụ mới nhất. CCS dẫn đến tính toán Pi và tính di động của kênh giao tiếp kết thúc, một tính năng là một phần của Go và được thêm vào Occam trong thập kỷ qua.
Mô hình CSP đồng thời hoàn toàn bằng cách xem xét các thực thể tự động ('quy trình', v.những thứ nhẹ như chủ đề màu xanh lá cây) tương tác đơn giản bằng trao đổi sự kiện. Phương tiện truyền sự kiện là dọc theo kênh. Các quá trình có thể phải xử lý một số đầu vào hoặc đầu ra và chúng thực hiện điều này bằng cách chọn sự kiện đã sẵn sàng đầu tiên. Các sự kiện thường mang dữ liệu từ người gửi đến người nhận. Một tính năng nguyên tắc của mô hình CSP là một cặp quy trình tham gia vào giao tiếp chỉ khi cả hai đều sẵn sàng - trong điều kiện thực tế, điều này dẫn đến cái được gọi là truyền thông 'đồng bộ'. Tuy nhiên, việc triển khai thực tế (Go, Occam, Akka) cho phép các kênh được đệm (trạng thái bình thường trong Akka) sao cho sự trao đổi các bước của sự kiện thường được tách ra để thay thế.
Vì vậy, tóm lại, một hệ thống dựa trên sự kiện dựa trên CSP thực sự là một mạng lưu lượng dữ liệu của các quá trình được kết nối bởi các kênh.
Bên cạnh việc diễn giải CSP theo hướng sự kiện, đã có những người khác. Một ví dụ quan trọng là cách tiếp cận 'event-wheel', một khi phổ biến để mô hình hóa các hệ thống đồng thời trong khi thực sự có một luồng xử lý đơn. Các hệ thống như vậy xử lý các sự kiện bằng cách đặt chúng vào một hàng đợi xử lý và xử lý chúng đúng hạn, thường là thông qua một cuộc gọi lại. Công cụ xử lý sự kiện của Java Swing là một ví dụ điển hình. Có những người khác, ví dụ: cho các công cụ mô phỏng dựa trên thời gian. Người ta cũng có thể nghĩ về mô hình Javascript/NodeJS như phù hợp với thể loại này.
Vì vậy, tóm lại, một sự kiện là một cách để thể hiện sự tương tranh nhưng không có sự song hành. Điều này trớ trêu là hai cách tiếp cận mà tôi đã mô tả ở trên đều được mô tả là sự kiện được định hướng nhưng ý nghĩa của chúng theo biến cố sự kiện là khác nhau trong mỗi trường hợp. Trong một trường hợp, các thực thể giống phần cứng được kết nối với nhau; trong khác, hầu như tất cả các hành động được thực hiện bởi callbacks. Cách tiếp cận CSP tuyên bố có thể mở rộng được vì nó hoàn toàn có thể tổng hợp được; đó là tự nhiên lão luyện tại thực hiện song song cũng có. Nếu có bất kỳ lý do để ủng hộ một trong những khác, đây có lẽ là nó.
Nguồn
2013-06-12 22:15:37
-1. Bạn đã làm gì/đọc cho đến nay để có được một ý tưởng về Event Concen Concurrency là gì? Google ít nhất cũng có thể giúp bạn với điều đó. Ba lần truy cập đầu tiên cho tôi là: http://berb.github.io/diploma-thesis/original/055_events.html, https://www.youtube.com/watch?v=2gcrTsQ7yi4, https: // vi. wikipedia.org/wiki/Event-driven_programming. –