【发布时间】:2010-08-05 10:55:54
【问题描述】:
我正在从事一个小型项目,该项目涉及创建一个旨在由大型产品在后台运行的控制台程序。
该程序应该一方面与主要产品 (IP21) 通信,另一方面充当服务器,处理多个客户端。
我已经开始研究架构并提出了一些基于reactor 处理事件的东西,例如连接或主要产品生成的事件。客户端处理部分在单独的线程中处理,每个客户端一个。
但我不同意我的一位同事对这种架构的看法。他说我应该把反应堆和其他几个在主线程中运行的组件放在一个单独的线程中。主线程应该尽可能简单。如果这部分发生,我会这样做,以便程序不会崩溃。他说拥有一个完全没有功能的程序总比一个剧烈的崩溃要好。
我说最好快点失败。如果程序的这个(关键)部分崩溃,则没有理由尝试使其保持活动状态。而且我相信它会给用户带来麻烦;他会注意到有问题,但是如果他查看任务列表(我们的产品作为某种任务管理器,它列出了应该运行的任务并允许轻松跟踪崩溃的任务)他不会注意到程序崩溃了!
我希望您可以通过给一方或另一方一些论据来帮助我们;)
编辑:感谢您的回答,但我们不同意将反应堆和其他一些组件放在单独的线程中以防严重的编程相关问题(段错误/死锁)的有用性/)。我认为让程序在没有这个线程的情况下运行既危险又毫无意义。
【问题讨论】:
-
使用 Proactor 模式 :) en.wikipedia.org/wiki/Proactor_pattern
标签: architecture