You are here

Состояния сопрограммы

Перевод может содержать ошибки. Читайте первоисточник: Co-Routine States

Назад: [Сопрограммы во FreeRTOS] Вверх: [Сопрограммы во FreeRTOS] Вперёд: [Сопрограммы во FreeRTOS]

 

Сопрограммы предназначены для использования только на очень маленьких процессорах, которые имеют серьёзные ограничения по объёму ОЗУ, и обычно не используются на 32-битных микроконтроллерах.

Сопрограммы могут находиться в одном из следующих состояний:

  • Запущена (Running)

    Когда сопрограмма фактически выполняется, говорят, что она находится в запущенном состоянии (Запущена). И она в это время использует процессорное время.

  • Готова (Ready)

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

    1. Другая сопрограмма с таким же или бОльшим приоритетом уже находится в состоянии Запущена, или
    2. Задача находится в запущенном состоянии - это возможно, если приложение использует и задачи, и сопрограммы.
  • Заблокирована (Blocked)

    Говорят, что сопрограмма находится в заблокированном состоянии (Заблокирована), если в данный момент она ожидает временнОго или внешнего события. Например, если сопрограмма использует вызов crDELAY(), она будет блокироваться (переходить в заблокированное состояние) до истечения периода задержки - это временнОе событие. Заблокированные сопрограммы недоступны для планирования.

В настоящий момент (v10.1.1) сопрограммы не имеют состояния, эквивалентного приостановленному состоянию задачи.

Допустимые переходы между состояниями сопрограммы

 

Hobby's category: