Многопоточный рабочий шаблон - PullRequest
0 голосов
/ 30 ноября 2011

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

Я чист?

Пожалуйста, сообщите ...

Ответы [ 2 ]

2 голосов
/ 30 ноября 2011

Невозможно ускорить выполнение отдельного запроса, добавив больше потоков.

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

Итак, это сложнее, чем просто "run it in multithreaded"!

0 голосов
/ 30 ноября 2011

Ключ к шаблонам - это не только один.

Звучит так, как будто вы хотите TaskListener, который прослушивает события taskStarted и taskFinished, которые могут использовать TaskProfiler, который будет определять, завершился ли этот Task за соответствующее время. (Может также потребоваться Visit Task, чтобы выяснить более подробную информацию об этом, если ваши пороговые значения не одинаковы для всех задач)

Оттуда это звучит так, как будто вы хотите TaskExecutor, который уведомит TaskListener, когда он начнет и завершит определенную задачу.

TaskExecutor может сделать доступными increaseWorkerPool и decreaseWorkerPool методы, которые можно настроить с помощью TaskAdministrator, который получает обратную связь от профилировщика / слушателя.

Это в основном демонстративно, вы можете просто передать время завершения задачи как часть одного taskComplete(Task task, long millis) метода.

Все сказанное "порождает потоки, пока они не работают очень хорошо", не самая эвристическая из техник балансировки нагрузки ...

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