Я пытаюсь создать следующую структуру двойного буфера, то есть mmap * 2, с видом на первую и вторую половину из последующих mmaps.
пример циклического буфера
Однако в c / cpp aritmeti указателя c разрешена, однако я не могу сделать это с python mmap, из-за возможности передать только fileno.
Любые советы о том, как этого можно достичь?
/* create the array of data */
cb->data = mmap(NULL, cb->size << 1, PROT_NONE, MAP_ANONYMOUS | MAP_PRIVATE,
-1, 0);
if (cb->data == MAP_FAILED)
fail();
address = mmap(cb->data, cb->size, PROT_READ | PROT_WRITE,
MAP_FIXED | MAP_SHARED, fd, 0);
if (address != cb->data)
fail();
address = mmap(cb->data + cb->size, cb->size, PROT_READ | PROT_WRITE,
MAP_FIXED | MAP_SHARED, fd, 0);
Я знаю, что могу создать анонимный mmap с:
mmap.mmap(-1, DATA_LENGTH)
Но тогда это бесполезно для создания оконных видов.
Пытаясь достичь того, что указано в этом сообщении в блоге:
https://www.mikeash.com/pyblog/friday-qa-2012-02-17-ring-buffers-and-mirrored-memory-part-ii.html
Взято из этого репо: https://github.com/willemt/cbuffer
Спасибо всем