Помните, что операционная система все равно будет выполнять readahead для read (). Вы будете блокировать либо в read (), либо в write () - одна или другая будут узким местом операции - но даже если вы блокируете одну, это не значит, что другая не выполняется для вас за кадром. Это работа каждой многозадачной операционной системы.
Если вы используете для этого mmap, вы, скорее всего, усложняете работу ОС - усложняете ей задачу определения того, что вы на самом деле просто делаете входящие и исходящие данные, и усложняете ее. сделать чтение вперед. Это все еще можно понять (операционные системы очень хороши в этом), но вы, вероятно, не помогаете.
Единственное преимущество в принципе заключается в том, чтобы избежать затрат на копию памяти, но это не похоже на то, что ваша цель здесь (и если профилирование не говорит иначе, я сильно сомневаюсь, что это поможет производительности).