Tôi đang làm việc trên một dự án nhỏ liên quan đến việc tạo ra một chương trình điều khiển dự định chạy trong nền bởi một sản phẩm lớn hơn.Thất bại nhanh hoặc không an toàn?
Chương trình có nghĩa vụ phải nói chuyện với sản phẩm chính (IP21) trên một mặt và hoạt động như một máy chủ, xử lý một số máy khách, mặt khác.
Tôi đã bắt đầu nghiên cứu kiến trúc và đưa ra một thứ dựa trên sự kiện xử lý reactor như kết nối hoặc sự kiện được tạo bởi sản phẩm chính. Phần xử lý của khách hàng được xử lý trong các luồng riêng biệt, một cho mỗi khách hàng.
Nhưng tôi không đồng ý với một đồng nghiệp của tôi về kiến trúc này. Anh ta nói tôi nên đặt lò phản ứng và vài thành phần khác chạy trong sợi chính, trong một sợi riêng biệt. Các chủ đề chính nên càng đơn giản càng tốt. Tôi sẽ làm điều đó để chương trình không sụp đổ nếu phần này làm. Anh ta nói tốt hơn là nên có một chương trình hoàn toàn phi chức năng hơn là một vụ tai nạn dữ dội.
Tôi nói sẽ tốt hơn nếu không nhanh. Nếu điều này (quan trọng) một phần của chương trình bị treo thì không có lý do gì để cố gắng giữ nó sống. Hơn nữa tôi tin rằng nó có thể gây rắc rối cho người dùng; Anh ta sẽ nhận thấy có điều gì đó sai, nhưng nếu anh ấy nhìn vào danh sách nhiệm vụ (sản phẩm của chúng tôi như một công cụ quản lý tác vụ liệt kê các nhiệm vụ phải chạy và cho phép dễ dàng theo dõi một tác vụ bị rơi), anh ấy sẽ không nhận thấy chương trình bị lỗi!
Tôi hy vọng bạn có thể giúp chúng tôi bằng cách đưa ra một số tranh cãi về một bên này hay cách khác;)
chỉnh sửa: cảm ơn vì câu trả lời của bạn nhưng những gì chúng tôi không đồng ý về là về tính hữu ích của việc đưa các lò phản ứng và một vài các thành phần khác trong một chủ đề riêng biệt trong trường hợp có vấn đề liên quan đến lập trình nghiêm trọng (một segfault/deadlock/< chèn vấn đề quan trọng ở đây >). Tôi nghĩ rằng nó sẽ là cả hai nguy hiểm và vô nghĩa để có chương trình chạy mà không có chủ đề này.
sử dụng mô hình Proactor :) http://en.wikipedia.org/wiki/Proactor_pattern – garik