Сейчас я разрабатываю систему кэширования для своего проекта, в которой все кэшированное содержимое хранится в одном файле (точно так же, как объекты времени выполнения языка программирования хранятся в памяти), затем файл называется mmap ed, поэтому я могу читать и записывать его, как если бы я работал с кешем памяти, теперь я могу получить массив байтов части этого файла с отображением, и я хочу представить его с помощью потока, лучший способ это, конечно, поток, который напрямую поддерживается содержимым на диск без фактического копирования буфера, но я не думаю, что есть способ сделать это (или доказать, что я ошибаюсь?). Таким образом, второстепенный способ — каким-то образом «поделиться» этой частью в виде потока (здесь поток обязателен, указатель не будет работать, поскольку он будет использоваться с некоторыми сторонними API, которые принимают только потоки, однако я не хочу использовать MemoryStream, поскольку он полностью копирует байтовый буфер, что противоречит цели кеша, я хочу, чтобы у меня был только один поток, но несколько его представлений, чтобы использовать эти просмотры делает на самом деле не копирует буфер, чтобы я мог предоставить эти представления этим API. Однако мне казалось, что невозможно сделать такие представления подклассами потока, поскольку поток опирается на функции «Чтение» и «Запись», которые всегда требуют. копирование, вот мои проблемы: есть ли способ сделать это, как бы хитро это ни было на C#?
Подробнее здесь: https://stackoverflow.com/questions/793 ... same-effec
Создайте несколько представлений одного и того же потока или другие способы достижения того же эффекта на C#. ⇐ C#
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение