Синхронизация и взаимодействие программных потоков в операционной среде реального времени. Дорогов А.Ю. - 56 стр.

UptoLike

Составители: 

56
}
// разобрать пакет и отобразить сообщения на дисплее
printf("Got message(s): \n\n");
while (agh1 = agh)
{
agh = agh1->next;
printf("from process: %d (%d)\n", agh1->info.pid, getpid());
printf("msglen: %d (%d)\n", agh1->info.msglen, strlen(msg) + 1);
printf("srclen: %d\n", agh1->info.srcmsglen);
printf("err: %d\n", agh1->err);
printf("parts: %d\n", agh1->parts);
printf("msg: %s\n\n", (char *)agh1->iov->iov_base);
asyncmsg_free(agh1);
}
sleep(1);
if (asyncmsg_connect_detach(coid) == -1) // уничтожить соединение
{
perror("connect_detach");
return -1;
}
if (asyncmsg_channel_destroy(chid) == -1) // уничтожить канал
{
perror("channel_detach");
return -1;
}
return 0;
}
3.9. Очереди сообщений
Стандарт POSIX определяет набор неблокирующих средств передачи
сообщений, известных как «POSIX-очереди сообщений». Для того чтобы
использовать этот механизм обмена данными, необходимо запустить ме-
неджер очередей mqueue. Ядро QNX Neutrino непосредственно не участву-
ет в поддержке этого механизма. POSIX-очереди сообщений обеспечивают
интерфейс, хорошо известный многим программистам. Они подобны почто-
вым ящикам, которые можно обнаружить во многих исполняющих системах
реального времени. POSIX-очереди сообщений реализуют механизм при-
оритетного перемещения данных, при котором отправитель не блокируется
и может иметь много не доставленных сообщений, упорядоченных в оче-
редь. Фактически существует несколько очередей с разным уровнем при-
оритета. POSIX-очереди сообщений существуют независимо от процессов,
которые их используют. Это более медленный механизм, чем естественные
сообщения ядра, однако он обладает более широкими функциональными
возможностями, что может в ряде случаев компенсировать недостаток бы-
стродействия.
Очереди сообщений имеют сходство с файлами, во всяком случае, в
том, что касается их интерфейса. Любая очередь сообщений, как и файл,
имеет имя. Открыть очередь сообщений можно с помощью вызова