Шрифт:
Это означает, что главный поток никогдане переходит в спящее состояние, а просто входит в цикл, проверяя каждый раз значение переменной
Нам нужен метод, с помощью которого главный цикл мог бы входить в состояние ожидания, пока один из потоков не оповестит его о том, что какая-либо задача выполнена. Эта возможность обеспечивается использованием условной переменной( conditional variable) вместе со взаимным исключением. Взаимное исключение используется для реализации блокирования, а условная переменная обеспечивает сигнальный механизм.
В терминах Pthreads условная переменная — это переменная типа
Слово
Проще всего объяснить действие этих функций на примере. Вернемся к нашему примеру веб-клиента. Счетчик
Поток оповещает главный цикл о своем завершении, увеличивая значение счетчика, пока взаимное исключение принадлежит данному потоку (блокировано им), и используя условную переменную для сигнализации.
Затем основной цикл блокируется в вызове функции
Обратите внимание на то, что переменная