Я использую очередь сообщений системы V. В моей программе один поток непрерывно добавляет данные в очередь сообщений, а другой поток извлекает данные из очереди сообщений.чтение данных из очереди сообщений по возрастанию
мое сообщение структура очереди формат
struct mymsgbuf {
long mtype;
char mtext[MAX_SEND_SIZE];
};
, когда я с mtext
из сообщения мне нужно получить данные в порядке возрастания зависит от tag
.
моя очередь сообщений получить
q_ret = msgrcv(msgqueue_id, (struct mymsgbuf *)&recvbuf, MAX_SEND_SIZE, 0, 0)
выше возвращения формата из первых отправки данных в очереди сообщений.
Есть ли способ получения очереди сообщений в порядке возрастания?
Вы пробовали сообщения posix («man mq_overview»), он имеет приоритет, связанный с каждым сообщением. Проблема в том, что вы можете иметь 32768 различных приоритетов в linux-реализации очередей сообщений posix. – rbelli
проблема с очередью сообщений posix заключается в том, что мы можем хранить только 10 сообщений, поэтому потеря данных произойдет, если мы не будем считывать данные из очереди, минимум мне нужно сохранить 25 сообщений в очереди – sujin
Вы можете изменить лимит сообщений, изменив/proc/SYS/фс/mqueue/msg_max – Duck