Я пытаюсь найти лучшее решение для неблокирующего ввода-вывода через stdin / stdout со следующими характеристиками:
- Пока данных достаточно, считывайте их фрагментами размером n.
- Если данных недостаточно, считайте частичный фрагмент.
- Если данных нет, блокируйте их, пока они не появятся (даже если они меньше n).
Цель состоит в том, чтобы обеспечить эффективную передачу больших наборов данных при немедленной обработке «управляющих» кодов (вместо того, чтобы они оставались где-то в каком-то частично заполненном буфере).
Я знаю, что могу добиться этого, используя потоки и цикл istream :: get () или написав кучу кода, зависящего от платформы (поскольку вы не можете выбрать () для дескрипторов файлов в Windows) ... ((Там также istream :: readsome (), что кажется многообещающим, но единственные результаты, которые я могу найти в Google, были люди, которые говорят, что это на самом деле не работает хорошо.))
Поскольку я не особо много писал с этими API, возможно, есть способ получше.