2012-04-19 32 views
5

Mẫu thiết kế đối tượng hoạt động như tôi hiểu đang buộc thời gian cuộc sống luồng (riêng tư/chuyên dụng) với đối tượng và làm cho nó hoạt động trên dữ liệu độc lập. Từ một số tài liệu tôi đọc, sự tiến hóa của loại mô hình này là vì hai lý do, đầu tiên, quản lý các luồng thô sẽ là đau và các luồng thứ hai cạnh tranh cho tài nguyên được chia sẻ không mở rộng tốt bằng cách sử dụng mutex và khóa. trong khi tôi đồng ý với lý do đầu tiên, tôi không hiểu hết thứ hai. Làm cho một đối tượng hoạt động chỉ làm cho đối tượng độc lập nhưng các vấn đề như tranh chấp cho khóa/mutex vẫn còn đó (vì chúng ta vẫn có hàng đợi chung/bộ đệm), đối tượng chỉ ủy nhiệm trách nhiệm chia sẻ lên hàng đợi tin nhắn. Ưu điểm duy nhất của mẫu thiết kế này như tôi thấy là trường hợp tôi phải thực hiện nhiệm vụ asynch dài trên đối tượng được chia sẻ (bây giờ tôi chỉ gửi thông điệp đến một hàng đợi được chia sẻ, các luồng không còn phải chặn lâu trên mutex/nhưng chúng vẫn sẽ chặn và xuất bản các thông điệp/nhiệm vụ xuất bản). Khác với trường hợp này, ai đó có thể nói nhiều kịch bản hơn, nơi kiểu mẫu thiết kế này sẽ có những ưu điểm khác.Để sử dụng Đối tượng hiện hoạt hay không?

Câu hỏi thứ hai tôi có là (tôi mới bắt đầu đào xung quanh các mẫu thiết kế), sự khác biệt về khái niệm giữa, đối tượng hoạt động, lò phản ứng và mẫu thiết kế proactor. Làm cách nào để bạn quyết định mẫu thiết kế nào hiệu quả hơn và phù hợp với yêu cầu của bạn nhiều hơn. Sẽ rất tuyệt nếu ai đó có thể chứng minh một số ví dụ cho thấy ba mẫu thiết kế sẽ hoạt động như thế nào và cái nào có lợi thế/bất lợi so sánh trong các tình huống khác nhau.

Tôi hơi bối rối vì tôi đã sử dụng đối tượng đang hoạt động (sử dụng bộ đệm an toàn được chia sẻ) và tăng :: asio (Proactor) cả hai để thực hiện loại công cụ async tương tự, tôi muốn biết nếu có thông tin chi tiết hơn về khả năng áp dụng các mẫu khác nhau khi tiếp cận vấn đề.

Trả lời

4

ACE website có một số giấy tờ rất tốt trên các mẫu thiết kế Active Object, Proactor vi Reactor. Một bản tóm tắt ngắn của ý đồ của họ:

Các tích cực Object thiết kế mô hình tách riêng phương pháp thực hiện từ phương pháp gọi để tăng cường đồng thời và đơn giản hóa truy cập đồng bộ hóa với một đối tượng cư trú trong thread riêng của mình kiểm soát. Còn được gọi là: Đối tượng đồng thời, diễn viên.

Các Proactor mô hình hỗ trợ giải mã kênh và cử nhiều xử lý sự kiện, được kích hoạt bởi việc hoàn các sự kiện không đồng bộ. Mẫu này được sử dụng nhiều trong Boost.Asio.

Lò phản ứng Lò phản ứng mẫu thiết kế xử lý các yêu cầu dịch vụ được phân phối đồng thời đến một ứng dụng bởi một hoặc nhiều khách hàng. Mỗi dịch vụ trong một ứng dụng có thể bao gồm một số phương pháp 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 cụ thể về dịch vụ . Còn được gọi là: Người điều phối, Trình thông báo.

Các vấn đề liên quan