TLTR; : параллельность (в смысле true одновременное выполнение) на одном, не гиперпоточном ядре процессора, НЕВОЗМОЖНО.
Оборудование (< - РЕДАКТИРОВАТЬ) Paralellism может быть достигнуто на нескольких уровнях. Заказанный уменьшающейся зернистостью:
- мульти-хоста
- многопроцессорных
- многоядерный
- мульти-темы ("Hyper-Threading", т.е. "НТ") (EDIT: Я добровольчества опустить случай векторизованных compuations где несколько АЛУ может быть приводимый одним и тем же ядром)
Ваш вопрос относится к управлению двух программных потоков в случаях 3. (в случае, если HT недоступен/отключен) или 4.
В обоих случаях процессы фактически НЕ запускаются параллельно. Пользователь имеет впечатление одновременности из-за чрезвычайно быстрых переключателей контекста, выполняемых на уровне ЦП, которые, как правило, выделяют, последовательно физическое ядро (соответственно время), на одну или другую программную нить
В обоих случаях случаях эти процедуры просто не выполняются одновременно, а последовательно
относительная приоритетность каждого из этих 2 процедуры могут быть установлены на различных операционных систем на «приоритет» вы даете процесс, который будет обрабатываться планировщиком ОС, который, в свою очередь, будет выделять процессорное время.
HTH.
Чтобы выполнить тесты, чтобы лучше понять эту тему, вы можете захотеть «слияния cpu» Google. Это позволит вам запустить двухпоточный процесс на одном физическом ядре многоядерного процессора и время, затрачиваемое каждым из потоков, при изменении их приоритета и т. Д.
(4) смешивает две разные вещи. HT - это аппаратная поддержка, позволяющая быстро переключаться между двумя потоками (поэтому, если один поток ожидает данных из памяти, другой может взять на себя). есть также (5), которые являются «простыми» потоками на программном уровне. как 4, так и 5 не являются «истинными» потоками, где операции происходят параллельно, но (4) значительно приближаются, поскольку некоторые операции (или частичные операции) могут возникать параллельно с другим гиперпотоком. например, выборка памяти для одной гиперпотоки может происходить, пока выполняется другая. –
@adrew cooke: спасибо за уточнение списка. Я намеренно не включил (5) в список именно потому, что это «программный» параллелизм, поэтому вы правы (и я изменяю начальную запись): я только перечислял «аппаратные» типы параллелизма. –
-1: Все современные процессоры обеспечивают параллелизм на уровне команд. См. Мой ответ. –