Компоненты и технологии • №2 '2011 компоненты


errCOULD_NOT_ALLOCATE_REQUIRED



Pdf көрінісі
бет99/129
Дата28.09.2023
өлшемі4.1 Mb.
#478975
1   ...   95   96   97   98   99   100   101   102   ...   129
Kurniz

errCOULD_NOT_ALLOCATE_REQUIRED_
MEMORY).
API-функция
vCoRoutineSchedule()
Выполнение сопрограмм должно быть 
организовано при помощи циклического 
вызова API-функции vCoRoutineSchedule()
Ее прототип:
void vCoRoutineSchedule( void );
Вызов vCoRoutineSchedule() рекомендуется 
располагать в задаче Бездействие:
void vApplicationIdleHook( void )
{
vCoRoutineSchedule( void );
}
Если задача Бездействие не выполняет ни-
каких других функций, то более эффектив-
ной будет следующая ее реализация:
void vApplicationIdleHook( void )
{
for( ;; )
{
vCoRoutineSchedule( void );
}
}
Даже если в программе не используется 
ни одной задачи, задача Бездействие автома-
тически создается при запуске планировщика.
Вызов API-функции vCoRoutineSchedule() 
внутри задачи Бездействие позволяет легко 
сочетать в одной программе как задачи, так 
и сопрограммы. При этом сопрограммы бу-
дут выполняться, только если нет готовых 
к выполнению задач с приоритетом выше 
приоритета задачи Бездействие (который 
обычно равен 0).
В п р и н ц и п е в ы з о в A P I - ф у н к ц и и 
vCoRoutineSchedule() возможен в любой 
задаче, а не только в задаче Бездействие. 
Обязательным требованием является 
то, чтобы задача, из которой вызывает-
ся vCoRoutineSchedule(), имела самый низкий 
приоритет. Иначе если существуют задачи 
с более низким приоритетом, то они не будут 
получать процессорное время.
Важно, что стек, общий для всех сопро-
грамм, является стеком той задачи, которая вы-
зывает API-функцию vCoRoutineSchedule()
Если вызов vCoRoutineSchedule() располага-
ется в теле задачи Бездействие, то все сопро-
граммы используют стек задачи Бездействие. 
Размер стека задачи Бездействие задается ма-
кроопределением configMINIMAL_STACK_


Достарыңызбен бөлісу:
1   ...   95   96   97   98   99   100   101   102   ...   129




©dereksiz.org 2024
әкімшілігінің қараңыз

    Басты бет