Я использую Boost.Asio как простую библиотеку сокетов.
Когда я открываю сокет, я создаю поток, который продолжает чтение в этом сокете и возвращает, когда сокет был закрыт, или некоторыепроизошли другие ошибки.
while((read = socket->read_some(buf, ec)) != 0) {
// deal with bytes read
}
Этот код хорошо работает на Windows и Mac.Однако в linux, когда сокет закрывается от основного потока, для возврата socket::read_some
требуется довольно много времени - я обнаружил, что это более 2 минут.
Могу ли я что-нибудь сделать, чтобы улучшить это?