В соответствии с инструкцией boost для Boost.Iostreams(В разделе 3.6, в самом низу):
http://www.boost.org/doc/libs/1_64_0/libs/iostreams/doc/index.html
Хотя концепции фильтра и устройства Boost.Iostreams могут неблокирующий ввод-вывод, стандартный поток библиотек С++ и интерфейсы буфера потока не могут, поскольку им не хватает средств для различать временные и постоянные сбои для или написать запрос
Однако функция std::istream::readsome
оказывается неблокирующей, так как доступные символы будут немедленно возвращены, без блокировки (за исключением копии RAM). Я понимаю, что:
std::istream::read
будет блокироваться до eof
или количества прочитанных символов.
std::istream::readsome
немедленно вернется с символами, скопированными из внутреннего буфера.