课程概况
Данный курс посвящен изучению многопоточности. В начале курса вы узнаете, что такое многопоточность, плюсы и минусы ее использования, а также разберетесь как решать возникающие проблемы такие как Deadlock, Livelock и другие.
Далее в курсе вы познакомитесь как с низкоуровневыми API для работы с многопоточностью – POSIX и NSThread, так и с высокоуровневыми API – Grand Central Dispatch и OpetationQueue.
В завершении курса вы научитесь работать с instruments, a также со встроенными в Xcode средствами для обнаружения утечек памяти и проблем производительности в приложении.
课程大纲
Многопоточность
На первой неделе мы начнем знакомиться с многопоточностью. Мы расскажем что это такое, а также рассмотрим плюсы и минусы ее использования в приложении. Также мы рассмотрим основные проблемы многопоточности такие как: Race Condition, Deadlock, Livelock и другие.
Потоки
Вторая неделя посвящена работе с потоками. Мы расскажем вам про низкоуровневые API для работы с потоками: POSIX и NSThreads, рассмотрим варианты синхронизации потоков, а также работу в фоновом режиме. В дополнении к этой теме мы познакомим вас с RunLoop, Autorelease pool и Timer.
GCD
Третья неделя посвящена высокоуровневому API для работы с многопоточностью GCD - Grand Central Dispatch. Мы расскажем про работу с GCD, про глобальные, последовательные и параллельные очереди, про приоритеты в очередях, а также про синхронное и асинхронное выполнение задач. Далее, развивая эту тему, мы расскажем про средства синхронизации в GCD: барьеры, семафоры и группы. В завершении этой темы вы научитесь как использовать Core Image вместе с GCD для применения фото фильтров.
Operations
На четвертой неделе мы расскажем об Operations и Operations Queue. Это еще одно высокоуровневое API для создания многопоточного кода без взаимодействия с потоками напрямую. Оно предоставляет возможность выстраивать зависимости между операциями. Вы научитесь создавать собственные сабклассы Operations, а также использовать CIFilters вместе с Operations.
Проблемы и решения
На пятой неделе мы расскажем об оптимизации приложений. Вы узнаете о профилировании приложений с помощью Instruments. С их помощью вы научитесь искать утечки памяти и проблемы производительности в приложении. Также вы научитесь работать со встроенным в Xcode средством поиска ошибок - thread sanitiser.
Курсовое задание
На 6 неделе вы продолжите работу над своим приложением. Основным нововведением будет публикация новых фотографий и наложение фильтров на фото