|
vTaskSuspendAll или taskENTER_CRITICAL, что лучше использовать ? |
|
|
|
Jul 20 2015, 11:50
|

Гуру
     
Группа: Свой
Сообщений: 2 015
Регистрация: 23-01-07
Из: Москва
Пользователь №: 24 702

|
Подскажите, что лучше использовать например при создании задачи и других подобных случаях, vTaskSuspendAll или taskENTER_CRITICAL ? Задачи создаются и удаляются регулярно. Посмотрел код, taskENTER_CRITICAL taskEXET_CRITICAL короче, и стало быть выполняется быстрее. Если запрещение прерываний ни чему не мешает, то стало быть из соображений скорости нужно использовать taskENTER_CRITICAL, а про vTaskSuspendAll вообще забыть, я верно рассуждаю ? Код vTaskSuspendAll(); // taskENTER_CRITICAL();
if(v_Task1_Handle==NULL) xTaskCreate(v_Task1,"v_Task1", 100 , NULL , tskIDLE_PRIORITY + 1, &v_Task1_Handle);
vTaskResumeAll(); //taskEXET_CRITICAL();
--------------------
Если у Вас нет практического опыта в данной теме- не вступайте в дискуссию и не пишите никаких теоретических рассуждений! Заранее спасибо !
|
|
|
|
|
 |
Ответов
|
Aug 4 2015, 07:53
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
QUOTE (MiklPolikov @ Aug 3 2015, 18:53)  Всё-таки ясности так и нету. В описании функций taskENTER_CRITICAL сказано, что она может повредить стек "NOTE: This may alter the stack (depending on the portable implementation) so must be used with care!" . А в описании vTaskSuspendAll про стек не сказано, хотя taskENTER_CRITICAL там то же вызывается. И вообще, в каком интересно случае taskENTER_CRITICAL испортит стек ? 1) все-же не портит, а изменяет стек 2) не всегда, а зависит от порта и действительно порты, котрые используют стек при запрещении прерывания есть. Я, например, на 186 процессор использую не счетчик запретов прерываний, а сохранение сотояния в стеке. Удобно тем, что работает не только при вызове некой системной функции, но и при работе, например, с драйверами живущими своей жизнью. QUOTE (Непомнящий Евгений @ Aug 4 2015, 07:23)  vTaskSuspendAll останавливает шедулер, не трогает прерывания Внутри себя трогает и не раз. Просто секции закрытия прерываний относительно короткие.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
Сообщений в этой теме
MiklPolikov vTaskSuspendAll или taskENTER_CRITICAL Jul 20 2015, 11:50 nill Всё зависит от задачи. taskENTER_CRITICAL действуе... Jul 24 2015, 06:34 zltigo QUOTE (MiklPolikov @ Jul 20 2015, 14:50) ... Jul 24 2015, 07:25 MiklPolikov Цитата(zltigo @ Jul 24 2015, 10:25) При с... Jul 24 2015, 08:06  zltigo QUOTE (MiklPolikov @ Jul 24 2015, 11:06) ... Jul 24 2015, 08:15   MiklPolikov Цитата(zltigo @ Jul 24 2015, 11:15) Госпо... Jul 24 2015, 08:36    zltigo QUOTE (MiklPolikov @ Jul 24 2015, 11:36) ... Jul 24 2015, 08:53   Непомнящий Евгений Цитата(MiklPolikov @ Aug 3 2015, 18:53) В... Aug 4 2015, 04:23
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|