Согласно MSDN do c для closesocket:
«Клиент Winsock никогда не должен запускать closesocket на s одновременно с вызовом другой функции Winsock».
Например, что происходит, если поток завершения ввода-вывода обнаруживает ошибку и закрывает сокет:
client_socket_.lowest_layer().close(ec);
, в то время как одновременно другой поток собирается вызвать:
async_write(client_socket_,...)
Могут ли оба этих вызова ударил их базовые API-интерфейсы closesocket () и WSASend (), что вызвало потенциальную ошибку sh?
Я видел эти типы сбоев в обычном C ++, но не был уверен, есть ли у Boost C ++ какие-то встроенного механизма для предотвращения этого? Если нет, то для этих вызовов требуется заблокированный мьютекс с ограниченной областью действия et c., ..
Спасибо.