Я правильно понял, что если у вас есть, например, четыре процессора и четыре потока, они распределяются по каждому процессору? И когда у вас есть пять потоков, один процессор должен обрабатывать сразу два потока?Как обрабатываются потоки?
Заранее спасибо :)
Теоретически, да. На практике у вас может быть один процессор, в котором есть все потоки, назначенные ему, несколько процессоров, у которых есть несколько потоков, а другие - нет ... или любая комбинация между ними. –
Нет гарантий. Ваша операционная система может делать все, что захочет, с помощью ваших потоков. –
Темы не обязательно моделируют параллелизм: они моделируют * логический * параллелизм, а не * фактический * параллелизм. Когда у вас несколько потоков, вы указываете ОС, что у вас есть вещи, которые вы хотите делать одновременно (логически). Он может принять эти инструкции и попытаться запустить их, разбив их на разные процессоры. Но некоторые процессоры могут также делать такие вещи, как если операция завершится 10 циклов, запустите ее и выполните операцию из другого потока во время его запуска («hyperthreading»). Или глухая система может запустить 1 поток до завершения, прежде чем начинать работу над следующим. – IdeaHat