Подтвердить что ты не робот

Настройка квот ядра процесса с помощью С++

Если вы пишете программное обеспечение, в котором клиент платит за количество ядер процессора, которое использует программное обеспечение, то какой лучший способ добиться этого в вашем коде на С++? До сих пор мои исследования привели к использованию SetProcessAffinityMask для Windows и sched_setaffinity в системах POSIX.

4b9b3361

Ответ 1

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

Ответ 2

Это интересный вопрос. Я не думаю, что у меня идеальное решение, но поскольку ответа пока нет, позвольте мне предложить следующее:

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

(Я не думаю, что процесс настройки производительности процессора - это способ, так как его можно легко изменить во время выполнения. Поскольку он не требует каких-либо обратных инженерных или постоянных изменений в системе, я был бы обеспокоен тем, что обход этого не чувствует себя "плохо", чтобы не допустить, чтобы даже честные клиенты его пытались.)