Параллельное/многопотоковое чтение из ByteBuffer/Netty ByteBuff

Хей-хо,

ByteBuffers, а также netty ByteBuff используют индексы для хранения, где они в настоящее время "есть". В начале моего приложения я загружаю несколько файлов в ByteBuffers/ByteBuffs, чтобы читать их позже. Кроме того, байтовые буферы неизменяемы после загрузки. Моя проблема в том, что несколько клиентов должны иметь возможность читать из этих байтовых буферов, но поскольку они используют одни и те же индексы чтения/записи, это не сработает. Есть ли простой способ поддерживать индексы, возможно, на поток? У netty есть некоторые "инструменты" для достижения этого?

Я уже читал, что nio ByteBuffers не поддерживает несколько потоков, но это также верно, если вы только читаете их?

В основном я ищу способ отправить данные, которые хранятся в памяти, очень быстро по netty.

1 ответ

Вы можете вызывать дубликат на ByteBuf для каждого нового потока и использовать возвращаемый ByteBuf. Они будут иметь один и тот же контент, но не одни и те же индексы.

ByteBuf duplicate = ByteBuf.duplicate();

licensed under cc by-sa 3.0 with attribution.