Giải thích đơn giản cho “Mô hình lò phản ứng” với các Ứng dụng của nó [đã đóng]


88

Mô hình lò phản ứng được giải thích trong wikipedia và nó hơi trừu tượng. Bạn có thể mô tả mô hình này một cách cụ thể hơn? Lý tưởng nhất là với các đoạn mã hoặc sơ đồ lớp cấp cao mô tả một số ứng dụng của mẫu lò phản ứng.


3
Tìm thấy câu hỏi này là một câu trả lời tuyệt vời - stackoverflow.com/questions/9138294/…
Ryan Gibbons

Câu trả lời:


37

Bạn có thể muốn kiểm tra tài liệu gốc mô tả nó http://www.dre.vanderbilt.edu/~schmidt/PDF/reactor-siemens.pdf

Mẫu thiết kế Reactor xử lý các yêu cầu dịch vụ được một hoặc nhiều máy khách gửi đồng thời đến một ứng dụng. Mỗi dịch vụ trong một ứng dụng có thể bao gồm các phương thức phân phát và được đại diện bởi một trình xử lý sự kiện riêng biệt chịu trách nhiệm gửi các yêu cầu dịch vụ cụ thể. Việc điều động các trình xử lý sự kiện được thực hiện bởi một điều phối viên khởi tạo, người này quản lý các trình xử lý sự kiện đã đăng ký. Việc phân kênh các yêu cầu dịch vụ được thực hiện bởi một bộ phân kênh sự kiện đồng bộ.


Như bạn sẽ nhận thấy khi đọc bài viết, Douglas Schmidt et.al đã triển khai một khuôn khổ C ++ mô-đun và hiệu quả cao có tên là Môi trường Truyền thông Thích ứng, trong đó mẫu Lò phản ứng đóng vai trò trung tâm. Bản thân khung làm việc sử dụng rất nhiều mẫu thiết kế và đáng để kiểm tra chỉ vì mục đích đó. Nếu bạn đang tìm kiếm một khung công tác di động để xây dựng các phụ trợ C ++ có khả năng mở rộng cao, thì ACE đáng để tham khảo.
user2015735 Ngày

1
@reese liên kết bị phá vỡ ngày nay con người :(
Allan Chùa

1
@AllanChua Tôi nghĩ rằng tôi đã tìm thấy nó - dre.vanderbilt.edu/~schmidt/PDF/Reactor.pdf
sergeyrar

3
OP đã yêu cầu một lời giải thích "đơn giản, cụ thể" và bạn đã đưa ra một điều gì đó thậm chí còn trừu tượng hơn Wikipedia ...
Zhe

22

Một lò phản ứng cho phép nhiều tác vụ khối (ví dụ như do IO) được xử lý hiệu quả bằng cách sử dụng một luồng duy nhất. Lò phản ứng quản lý một nhóm các trình xử lý và chạy một vòng lặp sự kiện. Khi nó được gọi để thực hiện một tác vụ, nó sẽ liên kết nó với một trình xử lý mới hoặc trống làm cho nó hoạt động. Vòng lặp sự kiện (1) tìm tất cả các trình xử lý đang hoạt động và được bỏ chặn (hoặc ủy quyền điều này cho một triển khai điều phối) (2) thực thi từng trình xử lý được tìm thấy này tuần tự cho đến khi chúng hoàn thành hoặc đạt đến một điểm mà chúng chặn. Các trình xử lý đã hoàn thành trở nên không hoạt động và bị bỏ trống để sử dụng lại trong khi các trình xử lý hoạt động bị chặn mang lại hiệu quả, cho phép vòng lặp sự kiện tiếp tục. (3) Lặp lại từ bước (1)


1
Downvote vì đây là không đúng
SebNag

3
Ý tưởng cốt lõi là thực hiện phân kênh sự kiện đồng bộ. Các trình xử lý sự kiện chỉ được gọi nếu chúng có thể thực thi theo cách không bị chặn, ví dụ như toàn bộ gói dữ liệu có sẵn tại một ổ cắm mạng, đang chờ trình xử lý sự kiện xử lý dữ liệu. Điều này làm cho nó có thể thực hiện việc xử lý sự kiện tuần tự một cách non-blocking
SebNag

2
"mẫu Lò phản ứng chịu trách nhiệm phân kênh và điều phối nhiều trình xử lý sự kiện được kích hoạt khi có thể bắt đầu một hoạt động đồng bộ mà không bị chặn." từ bài báo được liên kết trong anwser được chấp nhận
SebNag

Điều này là không đúng sự thật cả. Có bao nhiêu sợi trong một lò phản ứng cũng giống như trong một kiểu lò phản ứng. Thay vì một vòng lặp sự kiện, bạn có thể có một chuỗi "điều khiển" duy nhất không sử dụng mẫu người quan sát / người nghe sự kiện. Hiệu suất như nhau.
Zombies
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.