Александр Шостак писал(а):
А что у вас возвращают носители с неизвестным размером? Или там везде HALT?
Это должно быть задано в спецификации на базовый интерфейс. Т.е. имеет смысл иногда закладывать в базовый интерфейс какую-то операцию, которая в некоторых реализациях "заглушена". Чтобы не плодить много интерфейсов.
Я, на самом деле, не использую этот интерфейс для чтения из потоков. У меня драйвер канала кладёт данные в любой указанный ему буфер (через заданный врайтер). А потребитель читает через ридер... Т.е. "развязка" через заданный потребителем буфер.
По поводу look-ahead - разумеется, Вы правы, относительно предельных случаев, что можно создать эффект позиционирования... Ну, это для ридера возможны такие фокусы. Для врайтера уже нет...