Как разработать многопоточное приложение

У меня есть многопоточное приложение. Каждый модуль выполняется в отдельном потоке. Модули:

- 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 ...

Все потоки с помощью очередей сообщений для предают коммуникацию потока земле (станд.:: синхронизация двухсторонней очереди условной переменной и взаимным исключением).

Некоторые модули используются других (например, все модули используют таймер и счетчик), и это для каждого сообщения, полученного от сети, которая должна быть обработана в очень высоких показателях.

Это - довольно сложное приложение, и дизайн выглядит "разумным". От другой руки я не уверен, что такой дизайн, поток на модуль, является "лучшим"? В частности, я боюсь что такой дизайн "encorage" много контекстных переключений.

Что Вы думаете?

Есть ли существуют какие-либо хорошие инструкции или проект с открытым исходным кодом извлечь уроки из того, как сделать "корректный" дизайн потокового приложения?

5
задан dimba 29 July 2010 в 21:31
поделиться