Одним из основных инструментов для работы с многопоточностью является GCD. Вроде всё понятно: при работе с GCD мы работаем с потоками не напрямую, а через очереди (queue), добавляя в них задачи (замыкания), которые выдергивается системой по принципу FIFO. Очередь может последовательная (.serial) или параллельная (.concurrent). И напоследок, задачи можно добавлять в очередь синхронно (.sync) или (.async), тут, как мне кажется, и возникают проблемы и вопросы. Блокирует ли параллельную очередь синхронное добавление задачи? Для того, чтобы получить ответ рассмотрим два примера...
Крутая геометрическая задача, в которой дано так много, но при этом все нужно использовать. Решать и разбирать такие задачи одно удовольствие. Условие: Полуокружность с диаметром AB и центром O разделена точками C и D на три части так, что точка C лежит на дуге AD. Из точки D на отрезки OC и AB опущены перпендикуляры DE и DF соответственно. Оказалось, что DE - биссектриса треугольника ADC, а DO - биссектриса треугольника ADF. Найдите угол CAD. Решение: Треугольник AOD равнобедренный (AO=OD - радиусы)...