Python Зеркальный двойной буфер с mmap - PullRequest
0 голосов
/ 29 апреля 2020

Я пытаюсь создать следующую структуру двойного буфера, то есть 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

Спасибо всем

...