Алгоритм, чтобы держать процесс занятым - PullRequest
0 голосов
/ 01 июля 2010

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

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

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

Ответы [ 4 ]

3 голосов
/ 01 июля 2010

Это действительно зависит от того, как вы хотите сохранить процесс "занятым". Существует большая разница между процессом, который занят обработкой чисел, и процессом, который занят использованием io, или процессом, который постоянно требует работы от ядра.

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

0 голосов
/ 01 июля 2010

Если sleep() вызывает проблемы, вы просто хотите подождать:

while(time() < stopSleepTime) {};

Существуют и другие, более точные решения, если вы предлагаете конкретную среду.

0 голосов
/ 01 июля 2010

Вы можете попытаться найти Командующего коммивояжера для набора случайно выбранных точек.

0 голосов
/ 01 июля 2010

Simple:

while(time() < stopSleepTime)
{
    //Do something bogus like sending a webrequest or microsleep, something that takes time
}

Это должно сильно поджарить процессор: -P

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