Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> пул потоков? или пул io_service`ов? 
V
    Опции темы
boostcoder
Дата 26.4.2011, 13:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



всем доброго дня.
читал исходники проекта p2engine, и обнаружил, что в проекте используется не один io_service и несколько рабочих потоков, а несколько io_service`ов, и, по идее, по одному потоку на io_service. но этого доказать не получилось, ибо реализацию метода __start(bool)(строка 137) я так и не нашел.

интересует, какая _принципиальная_ разница между стандартным способом, и этим? и в каких случаях такой способ предпочтительней?

спасибо.



Это сообщение отредактировал(а) boostcoder - 26.4.2011, 13:04
PM WWW   Вверх
mabrarov
Дата 26.4.2011, 14:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 100
Регистрация: 12.1.2011
Где: Казань

Репутация: 8
Всего: 9



Разница описана в примерах Boost.Asio, вроде бы. Утверждать на 100% не буду. Возможно, приводилась где-то в списке рассылки по Boost.Asio.
Вкратце, решение "io_service-per-worker-thread" хорошо тем (в отличие от thread-pool-over-one-io_service), что минимизирует конкурентый доступ к внутренностям io_service (и всего, что с ним связано, например, strand-ы). 
Однако, IMHO:
1) "внутренности io_service" итак написаны с расчетом на конкурентный доступ, т.е. это уже заложено в io_service изначально;
2) при работе с несколькоими io_service надо быть очень внимательным, если сущности, построенные на базе разных io_service, предполагается связывать каким-то видом общения (и тем более владения) - см. asio-samples echo_server - там 2 io_service и они создаются в определенном порядке (точнее должны уничтожаться в определенном порядке);
3) ну и мне больше импонирует вариант с несколькими пулами на базе io_service (разные пулы под разные классы/уровни задач - этакий конвейер) - см. asio-samples echo_server - за счет использования 2-х пулов (и 2-х io_service) уменьшается влияние выполнения одних задач на выполнение других задач (имеется в виду минимальное процессорное время, выделяемое задачам, при максимальной загрузке обоих пулов).
PM MAIL WWW Skype   Вверх
boostcoder
Дата 26.4.2011, 15:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



понял.
спасибо.

PM WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0399 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.