none
Количество ядер RRS feed

  • Вопрос

  • Всем привет!

    Есть два компа -

    1. Двухядерный,
    2. Четырехядерный

    Команда -

    string KCore = Environment.GetEnvironmentVariable ( "NUMBER_OF_PROCESSORS");

    в первом случае дает 2, это правильно,
    а во втором - 8 - это количество виртуальных потоков,
    а надо количество ядер.
    Можно, конечно, не париться, поставить четверку и забыть,
    как я наспех и сделал.
    Но, вообще-то, надо сделать как положено.

    18 февраля 2015 г. 12:58

Ответы

Все ответы

  • Наверное, лучший ответ здесь.
    • Предложено в качестве ответа Алексей ЛосевEditor 18 февраля 2015 г. 14:15
    • Помечено в качестве ответа QazRdx 18 февраля 2015 г. 14:33
    18 февраля 2015 г. 13:38
  • Чуть расширю предыдущий ответ. Количество логических ядер (именно то что получаете вы), можно получать вот так:

    Environment.ProcessorCount

    Ну а с остальным, все по ссылке есть и даже работает:

    Только пожалуйста, никогда, никаких решений по созданию потоков на основе этой информации не принимайте.

    18 февраля 2015 г. 14:15
    Отвечающий
  • Environment.ProcessorCount - да, это понятно, 
    это то же самое, что и у меня.

    А с WMI еще придется попотеть.
    Но это позднее, сейчас некогда.

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

    Спасибо!

    • Изменено QazRdx 18 февраля 2015 г. 14:34
    18 февраля 2015 г. 14:32