100
КОМПОНЕНТЫ И ТЕХНОЛОГИИ •
№ 6 '2011
компоненты
микроконтроллеры
Блокировка при чтении из очереди
Когда задача пытается прочитать данные
из очереди, которая не содержит ни одного
элемента, то задача переходит в блокирован-
ное состояние. Такая задача вернется в состо-
яние
готовности к выполнению, если другая
задача (или прерывание) поместит данные
в очередь.
Выход из блокированного состояния воз-
можен также при истечении тайм-аута, если
очередь на протяжении этого времени оста-
валась пуста.
Данные из
очереди могут читать сра-
зу несколько задач. Когда очередь пуста,
то все они находятся в блокированном со-
стоянии. Когда в очереди появляется элемент
данных, начнет выполняться та задача, кото-
рая имеет наибольший приоритет.
Возможна ситуация,
когда равноприори-
тетные задачи ожидают появления данных
в очереди. В этом случае при поступлении
данных в очередь управление получит та
задача, время ожидания которой было наи-
большим. Остальные же останутся в блоки-
рованном состоянии.
Блокировка при записи в очередь
Как и при чтении из очереди, задача мо-
жет находиться в блокированном состоя-
нии, ожидая возможность записи в очередь.
Это происходит, когда очередь полностью
заполнена и в ней
нет свободного места для
записи нового элемента данных. До тех пор
пока какая-либо другая задача не прочита-
ет данные из очереди, задача, которая пишет
в очередь, будет «ожидать», находясь в бло-
кированном состоянии.
В одну очередь
могут писать сразу несколь-
ко задач, поэтому возможна ситуация, ког-
да несколько задач находятся в блокирован-
ном состоянии, ожидая завершения опера-
ции записи в одну очередь. Когда в очереди
появится
свободное место, получит управле-
ние задача с наивысшим приоритетом. В слу-
чае если запись в очередь ожидали равно-
приоритетные задачи, управление получит
та, которая находилась в блокированном со-
стоянии дольше остальных.
Достарыңызбен бөлісу: