выполнялся



Автор Hunter задал вопрос в разделе Другие языки и технологии

Правда ли, что один поток выполняется на одном ядре процессора? Или он может выполняться ядрами параллельно? и получил лучший ответ

Ответ от Ётепан Михалин[гуру]
по-моему один поток может выполняться параллельно на нескольких ядрах-хотя могу и ошибаться...

Ответ от Xoodoo[гуру]
Правда

Ответ от Ѐуслан Исхаков[новичек]
Чисто теоретически, если сильно захотеть чтобы один поток выполнялся на более чем одном ядре, то ничего этому не сможет помешать 🙂

Ответ от Евгений Ломега[гуру]
один поток - одно ядро
много потоков не всегда много ядер

Ответ от Владимир Б.[гуру]
Скорее не потоки, а процессы. Потоки это виндовое мусорное понятие, так как они не смогли нормально организовать работу процессов (к примеру старт нескольких процессов, в т. ч. частей) . 🙂 Процессы меняются через определенные кванты времени. Каждый процесс имеет PID (номер) и приоритет. Их заменой занимается часть ядра ОС называемая планировщик. В зависимости от типа задач, один планировщик может быть лучше другого. Варианты:
1) Каждой задаче точное количество времени (Deadline Scheduler) - больше всего подходит для рабочих столов, где реакция системы на пользователя важнее производительности самих процессов.
2) Каждой задаче больше времени соразмерно приоритету (Completely Fair Queuing) - наоборот, система будет дольше реагировать (подвисать) , но каждая задача будет получать больше времени.
3) Просто всовывать задачи по ходу, минимизируется сложность самого планировщика (NOOP) - для маленьких систем или для нескольких задач. Ликвидируя лишнюю логику получаем еще прирост.
4) Выполнять все, что и (2), но дополнительно переорганизовывать задачи в определенный момент (Anticipatory elevator) - для сервера с меняющемся задачами.
Как видишь, все просто. Конечно это под ядро Linux и существует и другие, к примеру Brainfuck Scheduler (он так и называется) от Con Kolivas.
А на винде один шедулер - MS Pizdobol :)) Ничего не делает, только ресурсы жрет :)))
"Если в диспетчере задач для процесса задано соответствие "все ядра" и в этом процессе запустить поток с кодом "while(true){}", то системный монитор показывает, что у ядер практически одинаковая загруженность (~30% у каждого). "
Потому что он кидает процесс между четыремя ядрами, со скоростью одно кидание в четверть секунды :). На самом деле, гораздо чаще, но зато "равномерно" :). То есть он выжирает как минимум 20% на "перекидывание", вместо того, чтобы примагнитить к одному ядру. Кстати именно изза этого Бульдозер тормозит на винде.

Ответ от 22 ответа[гуру]
Привет! Вот подборка тем с похожими вопросами и ответами на Ваш вопрос: Правда ли, что один поток выполняется на одном ядре процессора? Или он может выполняться ядрами параллельно?
 

Ответить на вопрос:

Имя*

E-mail:*

Текст ответа:*
Проверочный код(введите 22):*