Проектирование очереди как разделяемой памяти

Я пытаюсь спроектировать / реализовать (круговую) очередь (на C) как разделяемую память, чтобы ее можно было совместно использовать между несколькими потоками / процессами.

Структура очереди выглядит следующим образом:

typedef struct _q {
    int q_size;
    int q_front;
    int q_rear;
    int *q_data;
}queue;

Поддерживает следующие функции:

int empty_q(queue *q);
int display_q(queue *q);
int create_q(queue **q, int size);
int delete_q(queue **q);
int enqueue(queue *q, int data);
int dequeue(queue *q, int *data);

В соответствии с размером очереди, указанным пользователем, память для q_data будет выделена в create_q ().

Вопрос: Как создать разделяемую память для этой очереди, используя системные функции, предоставленные в "sys / shm.h"? Любой фрагмент кода / пример для создания / присоединения / извлечения / удаления общей памяти для структуры данных очереди с использованием shmget (), shmat (), shmctl () и т. Д. Будет большим подспорьем.

10
задан Dialecticus 13 January 2012 в 09:23
поделиться