Я читал о том, как проверить, сколько процессоров или ядер у моей машины (MacBook OS X, Sierra, v. 10.12, Intel Core i7 с частотой 2 ГГц), но есть много разных ответов, например, здесь:
хотя мне нужно убедиться, что моя программа на C ++ работает только на 1 одном процессоре (и, если возможно, только на одном ядре, то есть без планирования, т.е. моя программа должна иметь выделенное ядро для запуска на => I ‘). Я не уверен, как на самом деле организована моя архитектура Mac OS X).
Я не уверен, должно ли это быть сделано на уровне реализации, компиляции или исполнения. Я видел, как люди говорили о taskset
для Ubuntu, но я не уверен, что это правильный инструмент для меня (возможно, он даже не существует для Mac OS X).
Примечание: если вы считаете, что этот вопрос нужно задать на другом веб-сайте Stack Exchange, просто скажите мне, и я перенесу его туда. На самом деле мне бы хотелось, чтобы мое решение было кроссплатформенным, поэтому, возможно, это не лучшее место, чтобы задать этот вопрос.
Процессы запланированы, идея незапланированного процесса — оксюморон.
Тем не менее, ограничение себя одним процессором в значительной степени является значением по умолчанию в C ++. main
начинается в одном потоке, и если вы не создадите дополнительные потоки, это все, что вы получите.
Вы упоминаете, что хотите «выделенное» ядро. Есть идея прикрепить поток к ядру, что, в некотором роде, достигает этого, но вы можете выяснить, что произойдет, если две программы прикрепят себя к одному и тому же ядру. Другое ядро может быть полностью не использовано, пока две программы совместно используют это закрепленное ядро. Это скорее функция для суперкомпьютеров, где ядра не имеют одинакового доступа к памяти, и вы должны сопоставить ядро ЦП и распределение памяти.
Других решений пока нет …