Операционные системы распределенных вычислительных систем




События. - часть 2


producer()

 {

       message m;

       int item;

       while (TRUE)

       {

          produce_item(&item); 

          receive(consumer, &m, msize);            /* получает пустой */

/* "контейнер" */

          build_message(&m, item);       /* формирует сообщение */

          send(consumer, &m, msize);

        } 

  }

consumer()

 {

       message m;

       int item, i;

       for (i = 0; i < N; i ++)

send (producer, &m, msize);  /* посылает все пустые *.

/* "контейнеры" */

       while (TRUE)

       {

receive(producer, &m, msize);

extract_item(&m, item);

send(producer, &m, msize);   /* возвращает "контейнер" */

consume_item(item);

        } 

  }

producer() AND consumer()  /* запустили 2 процесса */

Механизмы  семафоров и обмена сообщениями взаимозаменяемы семантически и на мультипроцессорах могут быть реализованы один через другой. Другие классические задачи взаимодействия процессов - проблема обедающих философов (Dijkstra) и "читатели-писатели".




Содержание  Назад  Вперед