Пятница была насыщенной, поэтому не успел вчера ничего написать. Однако, надеюсь у вас она прошла хорошо!



В комментариях к предыдущему посту подписчик попросил разобрать отличие асинхронности от многопоточности.



Чтобы не спугнуть часть аудитории, состоящую из начинающих специалистов, не буду погружаться в технические детали реализации, а объясню на пальцах отличия этих концепций.



На самом деле, непонимание этих отличий очень распространённое явление - многие люди считают, что многопоточность и асинхронность это одно и тоже.



Обычно, в таких случаях помогает понятная аналогия. Покажу вам это на примере готовки в ресторане.



Допустим, в ресторан пришёл заказ: сделать тост и сварить яйца. Вот как этот заказ можно выполнить этот заказ при разных вариантах исполнения:



▪️Синхронный.

Сначала варятся яйца, потом готовиться тост.



▪️Асинхронный.

Начинаете варить яйца и одновременно с этим устанавливаете таймер.

Пока варятся яйца, начинаете готовить тост.

Когда «яичный» таймер прозвенит, будет готов тост, и оба блюда можно подать, закрыв заказ.



▪️Многопоточный.

Нанимаете на кухню двух поваров: один будет варить яйца, второй - готовить тост.

Теперь появляется проблема координации их работы, так чтобы они не конфликтовали при пересечениях на кухне.

Например, им может понадобится взять посуду из одного шкафа (распределённый ресурс).

А ещё им надо платить)



Обдумав этот пример, можно сделать вывод о том, что многопоточность это история об исполнителях, а асинхронность - о задачах.



Если при многопоточности нужно озадачиться вопрос организации труда и распределением работы, то при асинхронности необходимо понять, какую задачу можно взять, пока текущая в режиме ожидания.



Если хотите больше подобных разборов на канале, ставьте 🔥