-1

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

1 ответ1

1

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

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

Это не следует путать с перемещением потока. O/S может перемещать определенный поток из ядра, где он в настоящее время работает, в другое ядро в любое время по определенным причинам (например, управление энергопотреблением). В этом смысле один поток может использовать несколько ядер, но при этом он не использует более одного ядра одновременно ; вместо этого он будет "перепрыгивать" с одного ядра на другое, используя одно ядро в любой момент времени.

(Чтобы было проще, я не отличал Hyperthreading от реальных ядер в объяснении выше; я думаю, что в этом контексте все в порядке.)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .