Я пишу библиотеку базы данных, которая должна разумно поддерживать тайм-ауты.Теперь, когда я смотрю на пул соединений, меня особенно беспокоит следующий сценарий:
- Отправить запрос # 1
- Тайм-аут после n секунд.
- Отправить запрос # 2
- Получить ответ на запрос # 1
Шаг четвертый может произойти, поскольку запросы не помечены идентификатором запроса: всеЯ знаю, что получил ответ, и я не знаю, к какому запросу он относится.Можно утверждать, что это является ошибкой в протоколе, но это не мое дело.
Перед отправкой запроса № 2, что мне следует сделать с сокетом, чтобы избежать такого позднего ответа?Единственный правильный путь к shutdown()
, close()
и повторному connect()
?