Это псевдокод решения проблему producer -consumer( производителя - потребителя)или проблема ограниченного буфера в программировании путем передачи сообщений:
#define N 100 /* количество сегментов в буфере */
void producer(void) {
int item;
message m; /* буфер для сообщений */
while (TRUE) {
item = produce_item(); /* сформировать нечто, чтобы заполнить буфер */
receive(consumer, &m) : /* ожидание прибытия пустого сообщения */
build_message(&m, item); /* сформировать сообщение для отправки */
send(consumer, &m); /* отослать элемент потребителю */
}
}
void consumer(void) {
int itern, i;
message m;
for (i = 0; i < N; i++) send(producer, &m) : /* отослать N пустых сообщений */
while (TRUE) {
receive(producer, &m); /* получить сообщение с элементом */
item = extract_item(&m); /* извлечь элемент из сообщения */
send(producer, &m); /* отослать пустое сообщение */
consume_item(item); /* обработка элемента */
}
}