Сейчас я разрабатываю систему кэширования для своего проекта, в которой все кэшированное содержимое хранится в одном файле (точно так же, как объекты времени выполнения языка программирования хранятся в памяти), затем файл называется mmap ed, поэтому я могу читать и записывать его, как если бы я работал с кешем памяти, теперь я могу получить массив байтов части этого файла с отображением, и я хочу представить его с помощью потока, лучший способ это, конечно, поток, который напрямую поддерживается содержимым на диск без фактического копирования буфера, но я не думаю, что есть способ сделать это (или доказать, что я ошибаюсь?). Таким образом, второстепенный способ — каким-то образом «поделиться» этой частью в виде потока (здесь поток обязателен, указатель не будет работать, поскольку он будет использоваться с некоторыми сторонними API, которые принимают только потоки, однако я не хочу использовать MemoryStream, поскольку он полностью копирует байтовый буфер, что противоречит цели кеша, я хочу, чтобы у меня был только один поток, но несколько его представлений, чтобы использовать эти просмотры делает на самом деле не копирует буфер, чтобы я мог предоставить эти представления этим API. Однако мне казалось, что невозможно сделать такие представления подклассами потока, поскольку поток опирается на функции «Чтение» и «Запись», которые всегда требуют. копирование, вот мои проблемы: есть ли способ сделать это, как бы хитро это ни было на C#?
Подробнее здесь: https://stackoverflow.com/questions/793 ... same-effec
Создайте несколько представлений одного и того же потока или другие способы достижения того же эффекта на C#. ⇐ C#
Место общения программистов C#
1735636518
Anonymous
Сейчас я разрабатываю систему кэширования для своего проекта, в которой все кэшированное содержимое хранится в одном файле (точно так же, как объекты времени выполнения языка программирования хранятся в памяти), затем файл называется mmap ed, поэтому я могу читать и записывать его, как если бы я работал с кешем памяти, теперь я могу получить массив байтов части этого файла с отображением, и я хочу представить его с помощью потока, лучший способ это, конечно, поток, который напрямую поддерживается содержимым на диск без фактического копирования буфера, но я не думаю, что есть способ сделать это (или доказать, что я ошибаюсь?). Таким образом, второстепенный способ — каким-то образом «поделиться» этой частью в виде потока (здесь поток обязателен, указатель не будет работать, поскольку он будет использоваться с некоторыми сторонними API, которые принимают только потоки, однако я не хочу использовать MemoryStream, поскольку он полностью копирует байтовый буфер, что противоречит цели кеша, я хочу, чтобы у меня был только один поток, но несколько его представлений, чтобы использовать эти просмотры делает на самом деле не копирует буфер, чтобы я мог предоставить эти представления этим API. Однако мне казалось, что невозможно сделать такие представления подклассами потока, поскольку поток опирается на функции «Чтение» и «Запись», которые всегда требуют. копирование, вот мои проблемы: есть ли способ сделать это, как бы хитро это ни было на C#?
Подробнее здесь: [url]https://stackoverflow.com/questions/79319491/create-multiple-views-of-the-same-stream-or-other-ways-to-achieve-the-same-effec[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия