Помогите прояснить термины. Многопоточность, конкурентность, т.д

Рейтинг: 0Ответов: 0Опубликовано: 27.07.2023

Смотрел видео и читал статьи, но непонятки остались, правильно ли я все понял. поправьте меня пожалуйста, если я не прав.

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

Асинхронность - поток не блокируется, начиная задачу, и передавая коллбек. Тут же переключается обратно на другие задачи. Когда отрабатывает коллбэк - снова берется за начатую ранее задачу.

Многопоточность - неважно, сколько ядер у процессора, важно то, что задача будет исполняться на нескольких потоках.

Если ядро одно, то это будет конкурентность. Конкурентность, это когда потоки "конкурируют" за время работы процессора и он постоянно переключает их, чтобы каждый из потоков по очереди делал свою задачу. Время отведённое каждому потоку на выполнение не обязательно равное. Потоки НЕ выполняются одновременно.

Если ядер у машины несколько - тогда помимо конкурентности доступен параллелизм - можно одновременно исполнять несколько задач, каждой задаче по потоку, например.

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

Получается и конкурентность и параллелизм можно назвать многопоточностью.

Также слышал, что то, что я назвал "Параллелизмом" - это называется параллельным исполнением, а параллелизм - разбиение большой задачи на маленькие подзадачи, каждая из которых выполняется на своём потоке.

Ответы

Ответов пока нет.