![]() |
|
Модераторы: feodorv |
![]()
|
|
| Runcorn |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 7.2.2012 Репутация: нет Всего: нет |
Всем привет.
У меня есть пару общих вопросов по моделям ввода-вывода при работе с сетью на стороне сервера. Модель, при которой на один клиент создается один поток, является неэффективной, так как происходят слишком большие и ненужные расходы ресурсов системы. Обычно создают пул потоков для этого дела. Мне интересно, как реализовать правильный пул потоков? Я знаю, что очень часто используются порты завершения для работы с пулом. Почему именно порты завершения? Еще такой вопрос: можно ли связать пул потоков с ассинхронными сокетами, основанными на событиях? Также, являются ли сокеты, основанные на событиях, лучшими за сокеты, основанные на сообщениях? Меня пока что не интересуют высокоуровневые классы для работы с сетью. Я хочу разобраться на более низком уровне. Заранее всем спасибо за ответы. |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 13 Всего: 110 |
все очень расплывчато %)
читать темы полностью, и именно в этом порядке, и переходить по ссылкам: http://forum.vingrad.ru/forum/topic-341333/view-all.html http://forum.vingrad.ru/forum/topic-342722/kw-disruptor.html как закончишь - задавай вопросы по существу, пожалуйста. |
|||
|
||||
| Олег2005 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 421 Регистрация: 26.5.2005 Где: Рига Латвия Репутация: 6 Всего: 11 |
Порты завершения заточены под многопроцессорные или многоядерные системы. Это их первое преимущество. Второе - с одним портом завершения можно связать произвольное количество клиентов. Третье - один порт завершения может обрабатываться произвольным количеством рабочих потоков. Причем можно их создать несколько - и пока ненужные потоки повесить в спящий режим. Как только нагрузка увеличивается - автоматически подключаются спящие. Более эффективном модели пока просто нет. |
|||
|
||||
| newbee |
|
|||
![]() Бревно ![]() ![]() Профиль Группа: Участник Сообщений: 703 Регистрация: 24.8.2011 Репутация: нет Всего: 19 |
Порт завершения - это что-то типа epoll?
-------------------- You're face to face With man who sold the world |
|||
|
||||
| Runcorn |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 7.2.2012 Репутация: нет Всего: нет |
Я написал вопросы, которые меня интересуют в первом посте. Первую ссылку уже читал раньше, вторую еще прочитаю. Олег2005, спасибо за ответ. Кто нибудь читал хорошие статьи по портам завершения? Скиньте, если можете. Язык C/C++, но не принципиально. Это сообщение отредактировал(а) Runcorn - 18.2.2012, 12:54 |
|||
|
||||
| 12usver12 |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 247 Регистрация: 5.1.2007 Репутация: нет Всего: 1 |
так в чем проблема ? в инете очень много статей и примеров по портам завершения. Если вы не делаете игровой сервер на миллион пользователей - то попроще каркас у сервера будет через Completion Routines(Callbacks), а эффективность приближается к iocp если не такая же. |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 13 Всего: 110 |
||||
|
||||
![]()
|
| 1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Сети | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |