Хобрук: Ваш путь к мастерству в программировании

Почему основной цикл выполнения переводит поток выполнения в спящий режим, если не происходит никаких событий?

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

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

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


Ответы:


1

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

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

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

09.04.2009

2

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

09.04.2009

3

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

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

09.04.2009
Новые материалы

Как я могу подписаться на тему изображений в ROS Matlab и получить изображение RGB?
Привет, Пожалуйста, как я могу извлечь изображение из сообщения ROS Image, за которым следует imshow? Я уже подписался на правильную тему, но message.getData() дает мне объект..

Понимание СТРУКТУРЫ ДАННЫХ И АЛГОРИТМА.
Что такое структуры данных и алгоритмы? Термин «структура данных» используется для описания того, как данные хранятся, а алгоритм используется для описания того, как данные сжимаются. И данные, и..

Как интегрировать модель машинного обучения на ios с помощью CoreMl
С выпуском новых функций, таких как CoreML, которые упростили преобразование модели машинного обучения в модель coreML. Доступная модель машинного обучения, которую можно преобразовать в модель..

Создание успешной организации по науке о данных
"Рабочие часы" Создание успешной организации по науке о данных Как создать эффективную группу по анализу данных! Введение Это обзорная статья о том, как создать эффективную группу по..

Технологии и проблемы будущей работы
Изучение преимуществ и недостатков технологий в образовании В быстро меняющемся мире технологии являются решающим фактором в формировании будущего работы. Многие отрасли уже были..

Игорь Минар из Google приедет на #ReactiveConf2017
Мы рады сообщить еще одну замечательную новость: один из самых востребованных спикеров приезжает в Братиславу на ReactiveConf 2017 ! Возможно, нет двух других кланов разработчиков с более..

Я собираюсь научить вас Python шаг за шагом
Привет, уважаемый энтузиаст Python! 👋 Готовы погрузиться в мир Python? Сегодня я приготовил для вас кое-что интересное, что сделает ваше путешествие более приятным, чем шарик мороженого в..