Вопросы по ЛР №6 - chrislvt/OS GitHub Wiki

  1. Какие типы событий используете и почему?

В программе использую события с ручным сбросом для can_write и автосбросом для can_read, т.к писатели должны обладать монопольным доступом к данным, а читатели могут работать параллельно.

  1. Если есть событие со сбросом вручную, то д.б. resetevent. Покажите в коде. PS: reset.. надо вызывать в stop (такое условие со 2 января)
void stop_write(void)
{
    is_writer_active = false;

    ResetEvent(can_write);

    if (!waiting_writers)
    {
       SetEvent(can_read);
    }
    else
    {
       SetEvent(can_write);
    }
}
  1. Основная особенность задачи «читатели-писатели», определившая ее название?

  2. Вы в функции начало_чтения использовали мьютекс. Что можно сказать о последовательности операторов, которые находятся между захватом и освобождением мьютекса?