![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| mabrarov |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 100 Регистрация: 12.1.2011 Где: Казань Репутация: 8 Всего: 9 |
Сегодня вспомнил про интересную возможность Asio и "прикрутил" к Boost.Asio Winsock-овый ConnectEx (довольно просто и быстро).
Всех интересующихся приглашаю обсудить исходный код. Может быть кто-то уже делал это? Это сообщение отредактировал(а) mabrarov - 27.6.2011, 07:46 |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
а в чем смысл? в asio же есть async_connect(). или я чего-то не понял?
|
|||
|
||||
| mabrarov |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 100 Регистрация: 12.1.2011 Где: Казань Репутация: 8 Всего: 9 |
RTFM async_connect():
То, что Вы указали, работает через socket::async_connect, т.е. через select. Это сообщение отредактировал(а) mabrarov - 24.6.2011, 15:31 |
||||
|
|||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
о как. не смотрел в исходники. единственный плюс, который заметил -
а в чем еще плюс? |
|||
|
||||
| mabrarov |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 100 Регистрация: 12.1.2011 Где: Казань Репутация: 8 Всего: 9 |
Плюсы ConnectEx (я не стал менять интерфейс Asio и не добавил возможность посылать данные одновременно с подключением): 1) select требует дополнительного потока, а ConnectEx работает за счет IOCP; 2) select почти что deprecated в мире Windows и добавляет ограничения на одновременное кол-во async_connect (см. рассылку asio-users). |
||||
|
|||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
ааа.. так это только касательно вендус:
никогда не читал. буду знать. |
|||
|
||||
| mabrarov |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 100 Регистрация: 12.1.2011 Где: Казань Репутация: 8 Всего: 9 |
Ну, чикагская биржа, например, до сих пор на Windows Server 2003 сидит. IMHO "технология" IOCP лучше epoll/kqueue, потому что более абстрагирована (этакий проактор уже на уровне ОС) и имеет больше возможностей по оптимизации со стороны ОС. Не в Solaris ли MS подсмотрели идею "completion port"? |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
понятно.
|
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
||||
|
||||
| mabrarov |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 100 Регистрация: 12.1.2011 Где: Казань Репутация: 8 Всего: 9 |
Нет пруфа - тот проект по написанию простейшего полуавтоматического торгового агента загнулся. Т.е. заказчик просто перестал отвечать на мои письма. А если бы и не загнулся, то был бы "полный" NDA - даже тот док, где было понаписано про Windows Server и дополнительные настройки, сделанные биржей, стоит денег и просто так его не достать. Конечно, не сама биржа "крутится" на этих серверах - на этих серверах работают торговые платформы (скоростная торговля), тех клиентов (трейдеров/брокеров - не помню той терминологии), которые имеют достаточно денег, чтобы оплатить выделенный сервер поближе к самой бирже. Да Вы и сами наверное знаете все лучше меня, раз задаете такие вопросы 8) Это сообщение отредактировал(а) mabrarov - 24.6.2011, 21:30 |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
||||
|
||||
| mabrarov |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 100 Регистрация: 12.1.2011 Где: Казань Репутация: 8 Всего: 9 |
А все просто - совместимость с Windows (пам-пам) 2000. Кстати, IMHO совместимость с Win2000 штука хорошая, но можно же и в run-time делать выбор (как у меня и сделано). При чем этот "run-time выбор" будет делать лишние действия только на такой старухе как Win2000 - на остальных Win-платформах все шаги обязательные. |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
угу. попробуйте Khris`у патч предложить ;) |
|||
|
||||
| mabrarov |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 100 Регистрация: 12.1.2011 Где: Казань Репутация: 8 Всего: 9 |
Нет. Патч будет несколько сложнее - посмотрите, как реализованы чтение/запись через IOCP. Я как-то не привык требовать/ожидать что-то от авторов "стороннего" кода (сказывается работа с Delphi?). Мне привычнее: "сделать так, чтобы работало без изменений в том коде, что не наш. Чтобы работало прямо сейчас". Ну и конечно: "но сделать так, чтобы производительность/качество кода не (слишком) пострадали". Как раз проект async_connect показал, что с Asio последний пункт выполняется даже без "слишком". К тому же: 1) многие пользователи Asio не могут позволить себе легкий upgrade, а моему решению достаточно уже той версии Asio, где появился overlapped_ptr; 2) "на волне" async_connect можно прицепить кучу других IOCP-related "фишек" (что у нас там еще есть? мониторинг папок?). А патч? Ну я написал про async_connect в список рассылки asio-users - до сих пор мне ответил только один человек. То ли все сидят на Linux, то ли просто не читают по пятницам почту. Думаю, автор Asio все же как-то отреагирует на мое сообщение (тем более после того, как я ... отмечу async_connect на домашней страничке Asio). P.S. Если Вы не в курсе - автор Asio работает в основном с Linux. Вообще зорово уже то, что он реализовал overlapped_ptr. |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |