@Mishania_13

Что есть что в многопоточности?

Пытаюсь до конца для себя разобраться с многопоточностью. Но чем больше изучаю, тем больше теряюсь в понятиях.
Отсюда следующие вопросы, нужны просто определения:
Что такое поток?
Что такое очередь?
Как называется одна линия на картинке (это поток, очередь или что то другое)?

600e9b27d0ae4690735234.png
  • Вопрос задан
  • 116 просмотров
Пригласить эксперта
Ответы на вопрос 1
yakovmanshin
@yakovmanshin
Software Engineer
Поток — это цепочка задач (блоков кода), которые выполняются компьютером. Потоки нужны, чтобы более эффективно использовать многоядерные процессоры: каждое ядро может выполнять отдельный поток без перерывов (тайм-шейринга). Потоки на платформах Apple примерно соответствуют традиционному пониманию потоков.

У потоков есть недостаток: на их создание тратятся вычислительные ресурсы. Если для каждой мелкой операции (например, сделать запрос в сеть и получить ответ) создавать отдельный поток, это будет медленно и неэффективно.

Очередь (DispatchQueue) — это абстракция из фреймворка GCD (Grand Central Dispatch). Ее придумали для того, чтобы обходить проблему с частым созданием потоков. Внутри очереди есть точно такие же задачи (блоки кода), но при этом создание очереди — менее «дорогой» процесс, чем создание потока.

В конечном итоге задачи из очереди все равно выполняются в определенном потоке. Но несколько очередей могут делить между собой один и тот же поток — как раз чтобы не создавать лишние. Обычно ОС самостоятельно распределяет задачи из очередей по потокам.

На картинке показаны две очереди. Стрелки, идущие от верхней к нижней, демонстрируют добавление асинхронных блоков кода в нижнюю очередь (асинхронных — потому что верхняя очередь не ждет, пока нижняя выполнит задачу, а идет дальше).
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы