Ошибки при асинхронных опирациях asio, асинхронный сервер TCP.. |
Здравствуйте, гость ( Вход | Регистрация )
Ошибки при асинхронных опирациях asio, асинхронный сервер TCP.. |
Гость_Гость_Алексей_*_* |
28.12.2011, 15:21
Сообщение
#1
|
Гости |
Проблема наверн стандартная, но нормального решения её я не смог нагуглить.
Примерчик обычный... после подключения сессия начинает ждать данные сервер создаёт ещё одну и ждёт пока не придёт подключение.... запускается сессия методом start....
когда я удаляю сессию в очереди остаются асинхронные операции... которые в итоге роняют сервер... я пробовал просто закрыть сокет... или вызывать кансел для сокета... но сервер всё равно падает. читал под линукс всё отработает норм после вызова кансел...... как быть под виндой? |
|
|
Гость_Гость_Алексей_*_* |
28.12.2011, 20:22
Сообщение
#2
|
Гости |
|
|
|
BRE |
28.12.2011, 20:48
Сообщение
#3
|
Профессионал Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: 44 |
Ага.))) Значит используем boost::enable_shared_from_this в качестве предка Session. В момент, когда нужно прервать работу и уничтожить объект Session, делаем для сокета shutdown, все активные (уже запущенные обработчики) сработают с error == operation_aborted и при получении этого кода, ты не будешь перезапускать обработчики. Ссылок на объект не останеться и он будет разрушен. Сообщение отредактировал BRE - 28.12.2011, 21:43 |
|
|
Текстовая версия | Сейчас: 25.11.2024, 20:24 |