Мы начинаем погружаться в мир Structured Concurrency.
С развитием технологий наши телефоны становятся мощнее, в них появляются мощные процессоры, увеличивается количество ядер.
<aside> ❓ Для чего нужны ядра?
Для того чтобы ускорить выполнение задач. То есть мы понимаем, что если в телефоне 8 ядер - то система одновременно может выполнить 8 задач.
</aside>
Но нельзя просто так взять и из приложения обратиться к ядру и отдать туда любую задачу, доступ к этим ядрам закрыт системой с точки зрения безопасности.
Поэтому разработчикам предоставлены интерфейсы, которые позволяют организовать свой код и запланировать выполнение задач последовательно или параллельно. Каждый интерфейс имеет свои нюансы о которых обязательно нужно знать.
Основными понятиями в Structured Concurrency - являются задачи и исполнители.
Задачи должны всегда иметь исполнителя. Он определяется почти всегда самостоятельно системой в зависимости он того какой код вы написали. Также хочется отметить, что мы можем написать своего исполнителя - Custom Executor - (но это очень сложная задача, которую необходимо внимательно и детально прорабатывать). Существует несколько типов исполнителей:
Параллельный исполнитель - такой исполнитель может взять несколько задач и начать их выполнение. Такой исполнитель и позволяет ускорить работу приложения.
Serial исполнитель - такой исполнитель просто выполняет 1 задачу за другой.
Custom исполнитель - мы можем написать своего исполнителя на основе предыдущих
У каждого исполнителя есть определённые инструкции, с помощью которых он работает.
Такие инструкции называются контекстом исполнителя