Я пытаюсь спроектировать / реализовать (круговую) очередь (на 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 () и т. Д. Будет большим подспорьем.