我正在使用Chronicle Bytes版本1.7.22。我想使用 Bytes 进行大型媒体(例如图像、视频(的堆外缓存和持久性。目前,我正在按如下方式创建字节:
Bytes.elasticByteBuffer();
或(用于持久性(
MappedBytes.mappedBytes(file, 64);
我使用 Bytes.outputStream(( 来编写媒体内容,并使用 Bytes.inputStream(( 来读取媒体内容。但是,我只能读取一次输入流。它似乎不支持重置。如何在不分配额外内存的情况下多次并发读取媒体内容?
我建议您升级到最新的1.9.x版本,尽管因此无法解决您的问题,因此它将修复许多错误。
字节旨在是单线程的,但要小心,底层字节可以共享。您需要创建一个具有共享数据的 BytesStore whuch 并因此使用字节(例如 NativeBytes(进行包装,以便您可以拥有指向该数据的线程本地指针。
如果需要共享数据的时间长度,则必须使用线程安全操作将其存储在基础字节中。