Невозможно ответить на этот вопрос, не зная процедуры тестирования, т. Е. Как часто вы создавали объекты mapped_region
, насколько большими были отображенные части и к каким частям из них действительно обращались.
Также неясно, если в вашей реализации объект сопоставления файлов (boost::file_mapping
) также явно открывает дескриптор файла, или файл открывается вами.
Я могу только догадываться, что создание файла и объекта сопоставления в сетевой файловой системе, вероятно, требует большего взаимодействия между компьютерами (для синхронизации).
Я сделал некоторый поиск, и кажется, что Вам не повезло.
Для ncurses альтернатив существует Сленг, Ньют и Turbo Vision. Сленг намного больше, чем просто экранная обработка и таким образом более сложен, но возможно это может использоваться для Вашей цели?. Ньют использует экранную обработку и является намного более простым, но слишком простым и единственным деревом сообщений для Вашей цели, я думаю.
Turbo Vision является библиотекой графики текстового режима от Borland, используемой всеми их инструментами в конце 80-х / ранних 90-х. Borland выпустила исходный код когда рынок для такой вещи, уменьшенной, и существует теперь порт для Linux (примечание стороны, этот проект, кажется, записал свою собственную реализацию Turbo Vision). Тот порт не мертв (были некоторые обновления cvs в этом году, которые скомпилировали прекрасный (более старые выпуски не сделали)), но ни один из телевизионных примеров, которые я нашел, были актуальны, и я сделал только заставил несколько из них компилировать перед отказыванием от остальных. Это - определенный позор, потому что ТВ было прекрасной средой для использования. ТВ является btw C++ (и я предполагаю, что Вы используете C?).
Для альтернативы readline существует libkinput, который, возможно, сотрудничает с ncurses (это говорит, что может использовать terminfo. ncurse, но я не уверен, означает ли это, что может сосуществовать вместе с ncurses использованием)?
Возможно, одна опция состоит в том, чтобы выполнить readline "внешне" к Вашей ncurses программе с помощью rlwrap?
Я добился того, что вы описали, в своей программе:
http://dpc.ucore.info/lab:xmppconsole
Ниже приводится обработка файла io: