Бесконечный цикл, дружественный к процессору

Написать бесконечный цикл просто:

while(true){
    //add whatever break condition here
}

Но это снизит производительность ЦП. Этот поток выполнения будет максимально использовать мощность процессора.

Как лучше всего снизить нагрузку на ЦП? Добавление некоторого количества Thread.Sleep (n) должно помочь, но установка большого значения тайм-аута для сна () может указывать на то, что приложение не отвечает операционной системе.

Допустим, мне нужно выполнять задачу примерно каждую минуту в консольном приложении. Мне нужно, чтобы Main () работал в «бесконечном цикле», пока срабатывает таймер событие, которое сделает работу. Я хотел бы оставить Main () с наименьшим влиянием на процессор.

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

ПОЗДНЕЕ РЕДАКТИРОВАНИЕ:

Я хочу лучше объяснить, что я ищу:

  1. Мне нужно консольное приложение, а не служба Windows. Консольные приложения могут имитировать службы Windows в системах Windows Mobile 6.x с помощью Compact Framework.

  2. Мне нужен способ поддерживать приложение, пока работает устройство Windows Mobile.

  3. Все мы знаем, что консольное приложение работает, пока работает его статическая функция Main (), поэтому мне нужен способ предотвратить выход из функции Main ().

  4. В особых ситуациях (например, при обновлении приложения) мне нужно запросить остановку приложения, поэтому мне нужно бесконечно зацикливаться и проверять какое-либо условие выхода. Например, поэтому Console.ReadLine () мне не нужен. Проверка условий выхода отсутствует.

  5. Что касается вышеизложенного, я по-прежнему хочу, чтобы функция Main () была как можно более дружественной к ресурсам. Позвольте передать отпечаток функции, которая проверяет условие выхода.

53
задан elimad 18 May 2015 в 22:44
поделиться