Хорошая настройка? Поток: сетевая нить, GUI-нить, внутренняя нить PostOffice посреднический класс? - PullRequest
1 голос
/ 29 ноября 2010

Я склонен использовать следующее в качестве своей стандартной модели потоков, но, возможно, это не такая хорошая модель. Какие еще предложения есть у людей или они думают, что это хорошо настроено? Это не для высокопроизводительного интернет-сервера, хотя производительность иногда довольно критична, и в этих случаях я использую асинхронные сетевые методы и повторно использую буферы, но это та же модель.

Существует поток графического интерфейса для запуска графического интерфейса.

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

Существует один или несколько сетевых потоков, которые при необходимости разбивают исходящую отправку на peies, получают пакеты из различных сокетов и собирают их в сообщения.

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

Интерфейс потоков GUI / Backend имеет тенденцию быть более специальным и, вероятно, должен иметь свое собственное почтовое отделение, такое как класс или какой-нибудь альтернативный посредник?

Есть ли какие-либо комментарии / предложения по этой настройке потоков?

Ответы [ 2 ]

1 голос
/ 30 ноября 2010

Моя основная проблема в том, что вы на самом деле не хотите увлекаться мыслью о том, что может быть только один внутренний поток. Моя обычная модель заключается в том, чтобы сначала использовать MVC, убедиться, что все структуры данных, которые я использую, не являются небезопасными для многопоточной среды, избегать одиночных соединений, а затем профилировать как сумасшедшие, разбивая вещи на ходу, пытаясь минимизировать количество переменных условий я использую. Для длинных асинхронных задач я предпочитаю создавать новый процесс, особенно если это то, что может позволить ОС дать ему другой приоритет.

0 голосов
/ 29 ноября 2010

Эта архитектура звучит как классическая Model-View-Controller архитектура, которая обычно считается хорошей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...