【发布时间】:2010-07-29 21:31:37
【问题描述】:
我有一个多线程应用程序。每个模块都在单独的线程中执行。 模块是:
- network module - used to receive/send data from network
- parser module - encode/decode network data to internal presentation
- 2 application module - perform some application logic on the above data one after other
- counter module - used to gather statistics from other modules
- timer module - used to schedule timers
- and much more ...
所有线程使用消息队列进行线程间通信(std::deque 通过条件变量和互斥体同步)。
一些模块被其他模块使用(例如,所有模块都使用定时器和计数器),对于从网络接收到的每条消息,这应该以非常高的速率进行处理。
这是一个相当复杂的应用程序,设计看起来“合理”。另一方面,我不确定这样的设计,每个模块的线程,是“最好的”吗?特别是,恐怕这样的设计会“鼓励”很多上下文切换。
你怎么看?
有没有什么好的指南或开源项目可以学习如何“正确”设计线程应用程序?
【问题讨论】:
-
这真的取决于应用程序做什么,以及要求是什么。在某些应用程序中,感知复杂性对于满足模块化和关注点分离的要求是必要的。
标签: c++ multithreading