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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Подружить Boost.Asio с ConnectEx 
:(
    Опции темы
mabrarov
Дата 24.6.2011, 14:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Сегодня вспомнил про интересную возможность Asio и "прикрутил" к Boost.Asio Winsock-овый ConnectEx (довольно просто и быстро).
Всех интересующихся приглашаю обсудить исходный код.
Может быть кто-то уже делал это?

Это сообщение отредактировал(а) mabrarov - 27.6.2011, 07:46
PM MAIL WWW Skype   Вверх
boostcoder
Дата 24.6.2011, 15:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


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

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



а в чем смысл? в asio же есть async_connect(). или я чего-то не понял?
PM WWW   Вверх
mabrarov
Дата 24.6.2011, 15:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(boostcoder @ 24.6.2011,  15:21)
а в чем смысл? в asio же есть async_connect(). или я чего-то не понял?

RTFM async_connect():
Цитата

This function attempts to connect a socket to one of a sequence of endpoints. It does this by repeated calls to the socket's async_connect member function, once for each endpoint in the sequence, until a connection is successfully established. 

То, что Вы указали, работает через socket::async_connect, т.е. через select.

Это сообщение отредактировал(а) mabrarov - 24.6.2011, 15:31
PM MAIL WWW Skype   Вверх
boostcoder
Дата 24.6.2011, 15:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


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

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



Цитата(mabrarov @  24.6.2011,  15:23 Найти цитируемый пост)
работает через socket::async_connect, т.е. через select

о как.
не смотрел в исходники.

единственный плюс, который заметил -
Цитата

and optionally sends data once the connection is established.


а в чем еще плюс?
PM WWW   Вверх
mabrarov
Дата 24.6.2011, 15:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(boostcoder @ 24.6.2011,  15:34)

единственный плюс, который заметил -
Цитата

and optionally sends data once the connection is established.

а в чем еще плюс?

Плюсы ConnectEx (я не стал менять интерфейс Asio и не добавил возможность посылать данные одновременно с подключением):
1) select требует дополнительного потока, а ConnectEx работает за счет IOCP;
2) select почти что deprecated в мире Windows и добавляет ограничения на одновременное кол-во async_connect (см. рассылку asio-users).
PM MAIL WWW Skype   Вверх
boostcoder
Дата 24.6.2011, 16:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


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

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



Цитата(mabrarov @  24.6.2011,  15:52 Найти цитируемый пост)
1) select требует дополнительного потока

ааа.. так это только касательно вендус:
Код

An additional thread per io_service is used for the select demultiplexing. This thread is created on the first call to async_connect().

никогда не читал. буду знать.

PM WWW   Вверх
mabrarov
Дата 24.6.2011, 16:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(boostcoder @ 24.6.2011,  16:12)

ааа.. так это только касательно вендус:

Ну, чикагская биржа, например, до сих пор на Windows Server 2003 сидит. IMHO "технология" IOCP лучше epoll/kqueue, потому что более абстрагирована (этакий проактор уже на уровне ОС) и имеет больше возможностей по оптимизации со стороны ОС. Не в Solaris ли MS подсмотрели идею "completion port"?
PM MAIL WWW Skype   Вверх
boostcoder
Дата 24.6.2011, 17:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


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

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



понятно.

PM WWW   Вверх
boostcoder
Дата 24.6.2011, 20:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


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

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



Цитата(mabrarov @  24.6.2011,  16:24 Найти цитируемый пост)
чикагская биржа

пруф, пожалуйста ;)
PM WWW   Вверх
mabrarov
Дата 24.6.2011, 21:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(boostcoder @ 24.6.2011,  20:07)
пруф, пожалуйста ;)

Нет пруфа - тот проект по написанию простейшего полуавтоматического торгового агента загнулся. Т.е. заказчик просто перестал отвечать на мои письма.
А если бы и не загнулся, то был бы "полный" NDA - даже тот док, где было понаписано про Windows Server и дополнительные настройки, сделанные биржей, стоит денег и просто так его не достать. Конечно, не сама биржа "крутится" на этих серверах - на этих серверах работают торговые платформы (скоростная торговля), тех клиентов (трейдеров/брокеров - не помню той терминологии), которые имеют достаточно денег, чтобы оплатить выделенный сервер поближе к самой бирже.
Да Вы и сами наверное знаете все лучше меня, раз задаете такие вопросы 8)

Это сообщение отредактировал(а) mabrarov - 24.6.2011, 21:30
PM MAIL WWW Skype   Вверх
boostcoder
Дата 24.6.2011, 21:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


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

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



Цитата(mabrarov @  24.6.2011,  21:28 Найти цитируемый пост)
Да Вы и сами наверное знаете все лучше меня, раз задаете такие вопросы 8)

 smile 


мне вот что интересно: а почему в asio по умолчанию не используется ConnectEx ?
я вообще-то знаю, что для win OS реализация использует IOCP. но странно почему не используется ConnectEx...
PM WWW   Вверх
mabrarov
Дата 25.6.2011, 01:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(boostcoder @ 24.6.2011,  21:35)
мне вот что интересно: а почему в asio по умолчанию не используется ConnectEx ?
я вообще-то знаю, что для win OS реализация использует IOCP. но странно почему не используется ConnectEx...

А все просто - совместимость с Windows (пам-пам) 2000.
Кстати, IMHO совместимость с Win2000 штука хорошая, но можно же и в run-time делать выбор (как у меня и сделано).
При чем этот "run-time выбор" будет делать лишние действия только на такой старухе как Win2000 - на остальных Win-платформах все шаги обязательные.
PM MAIL WWW Skype   Вверх
boostcoder
Дата 25.6.2011, 03:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


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

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



Цитата(mabrarov @  25.6.2011,  01:16 Найти цитируемый пост)
можно же и в run-time делать выбор (как у меня и сделано)

угу.
попробуйте Khris`у патч предложить ;)
 
PM WWW   Вверх
mabrarov
Дата 25.6.2011, 03:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(boostcoder @ 25.6.2011,  03:26)
угу. попробуйте Khris`у патч предложить ;)

Нет. Патч будет несколько сложнее - посмотрите, как реализованы чтение/запись через 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.
PM MAIL WWW Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
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.0890 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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