Очереди
Помимо каналов операционная система IBM OS/2 имеет другое, более сложное средство передачи данных между процессами - очереди (queue ).
Очереди позволяют организовать передачу данных от нескольких "передающих" процессов к одному "принимающему". Они также часто используются для передачи данных между различными задачами внутри одного процесса.
Через очередь можно передавать элементы данных размером 32 бит, причем формат этих элементов полностью определяется процессом или задачей, создавшими очередь.
Схема работы очереди отличается от схемы работы канала.
Процесс или задача, создавшая очередь, называется серверным процессом для очереди. Серверный процесс является владельцем очереди и может извлекать или читать (без извлечения) из нее информацию в любом порядке. Напомним, что канал можно использовать только для последовательной передачи данных.
Остальные процессы, использующие очередь, называются клиентскими процессами. Они могут только записывать данные в очередь, но не читать их оттуда. Таким образом, очередь может служить для передачи данных только в одном направлении - от клиентских процессов к серверному процессу (рис.1.7).
Рис. 1.7. При использовании очереди данные передаются в одном направлении - от клиентских процессов к серверному процессу
Для синхронизации передачи данных для очереди можно назначить один семафор.