2009-04-09 2 views
0

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

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

У кого-то есть хорошее объяснение этой проблемы сна?

ответ

2

Это не проблема. Это хорошо. Что еще будет делать основной поток? Он не должен обрабатывать длительные задачи, что уменьшит «привязанность» пользовательского интерфейса при поступлении события пользовательского интерфейса.

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

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

2

Спящий поток позволяет планировщику ОС (подсистему, которая выделяет время процессора для потоков) для запуска других потоков.

2

Как говорили другие, установка потока в режим сна позволяет выполнять другие потоки.

Я добавлю, что, поскольку вы, вероятно, ссылаетесь на iPhone (на основе большинства ваших других вопросов), это также будет полезно, даже если никакие другие потоки не должны запускаться, поскольку потребляемая мощность процессора падает, когда он не работает ,

Смежные вопросы