Как мы теперь знаем, для решения широкого спектра актуальных и интересных проблем параллелизма нужны как блокировки, так и переменные условия. Одним из первых людей, осознавших это много лет назад, был Эдсгер Дейкстра (хотя точную историю трудно узнать [GR92]), известный, среди прочего, своим знаменитым алгоритмом “кратчайших путей” в теории графов [D59], ранней полемикой по структурированному программированию под названием “Утверждения Goto считаются вредными”. [D68a] (какое замечательное название!),...
В уроке 14 мы познакомились с мьютексами. Также мы немного определились с вопросом, чем вообще мьютексы отличаются от семафоров вообще и от двоичных семафоров в частности. Хотя это отличие в основном символическое. С семафорами мы встречались и ранее, когда писали код для stm32, поэтому с теорией их использования и назначения мы, в принципе, знакомы. Также мы знаем, что семафоры бывают двоичные и счётные. Двоичные семафоры от счётных отличаются тем, что они те же самые счётные, но считать они умеют только до единицы...