Использование всех 4 ядер в c ++ / c - PullRequest
0 голосов
/ 27 октября 2011

У меня есть основные процессы, которые создадут 4 потока. Если я просто запустлю все 4 потока, будет ли ядро ​​использовать все 4 ядра, или программа будет многопоточной на одном ядре? если нет, то как будет обрабатываться синхронизация на многоядерном компьютере. У меня процессор Intel 4core, и моя программа на C ++

Я запускаю это на Linux на виртуальной машине.

1 Ответ

3 голосов
/ 27 октября 2011

Вы действительно не знаете.

С одной стороны, стандарт C ++ 03 не знает ничего о потоках, ядрах или подобных вещах. Так или иначе, это все зависит от платформы.

Но даже с точки зрения платформы вы часто все еще не знаете. Операционная система планирует потоки и задания. Операционная система может - или не может - дать вам возможность указать « сходство процессоров » для конкретного потока, но обычно для этого требуется перескок через прыжок.

Одна из вещей, о которых вы также должны помнить, заключается в том, что если ваша цель состоит в том, чтобы каждое ядро ​​использовалось на 100%, вам часто потребуется более n потоков (где n - количество ядер). Потоки тратят много времени на сон, ожидание на диске и вообще ничего не делают на ядре . Точное количество потоков, которое вам понадобится, зависит от вашего реального приложения и платформы, но эксперименты могут помочь вам в этом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...