Как программно указать, на скольких ядрах работать проге?

Тема в разделе "WASM.WIN32", создана пользователем Flasher, 11 июн 2011.

  1. Flasher

    Flasher Member

    Публикаций:
    0
    Регистрация:
    31 янв 2004
    Сообщения:
    640
    Доброго времени суток.
    Полазил по инету, и наткнулся на эту статью.
    Как-нибудь можно программно это у себя реализовать, чтобы не потребовалось участие cmd.exe?

    Спасибо за внимание :)
     
  2. klzlk

    klzlk New Member

    Публикаций:
    0
    Регистрация:
    2 июн 2011
    Сообщения:
    449
    Аффинитет же.
     
  3. Skillax

    Skillax New Member

    Публикаций:
    0
    Регистрация:
    17 май 2011
    Сообщения:
    33
    http://www.koma-code.de/index.php?option=com_content&task=view&id=88&Itemid=93
     
  4. h0t

    h0t Member

    Публикаций:
    0
    Регистрация:
    3 апр 2011
    Сообщения:
    735
  5. Flasher

    Flasher Member

    Публикаций:
    0
    Регистрация:
    31 янв 2004
    Сообщения:
    640
    Благодарю, SetProcessAffinityMask то что надо, но теперь проблема другого характера.
    Не расприделяется равномерно между двумья ядрами.
    Указываю 3 во втором параметре, всё равно вся нагрузка на первое ядро. Хотя в диспетчере задач когда запускаешь по дефолту показывает что на двух ядрах работает, если снять галочки и обратно поставить то тогда действительно уже на двух ядрах распределится. Странно.

    Т.е. проще говоря по дефолту без каких-либо юзаний SetProcessAffinityMask, тоже не равномерно распроделяется, пока в диспетчере не пере-задашь.
     
  6. h0t

    h0t Member

    Публикаций:
    0
    Регистрация:
    3 апр 2011
    Сообщения:
    735
    странно, диспетчер задач например, как я помню просто открывает процесс и вызывает ProcessAffinityMask.
    Если Вам нужна жесткая балансировка то посмотрите в сторону заданий (они же Job)

    Вы все-таки код покажите)


    по дефолту вроде как все доступные процессоры используются
     
  7. Flasher

    Flasher Member

    Публикаций:
    0
    Регистрация:
    31 янв 2004
    Сообщения:
    640
    Это особенность самого процесса была, если подаждать 3-5 сек после запуска, а потом уже вызвать SetProcessAffinityMask - то будет норм распределятся.
     
  8. klzlk

    klzlk New Member

    Публикаций:
    0
    Регистрация:
    2 июн 2011
    Сообщения:
    449
    Есчо можно указать в директории конфигурации модуля битмапу ProcessAffinityMask. Но такая установка опасна - при невозможности установить требуемый аффинитет будет выведено сообщение и загрузчик дальнейшую работу прекратит.