|
Взаимодействие между задачами, Как правильнее ? |
|
|
|
Aug 24 2015, 23:53
|

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

|
Коллеги, добрый день. Наболел вопрос:
Есть задача А , которая управляет всей системой в целом. Есть задача Б, которая управляет соединением USB , в ней крутится цикл с приёмом данных из очереди. USB надо "включать" и "выключать" при отключении/подключении устройства к USB шине. Просто удалить задачу Б неправильно. Если это делать путём передачи в задачу Б команды через очередь или симафор, то эту очередь/симафор надо поллить в цикле, который там крутится. Если это делать путём сознания задачи В, которая закрывает задачу Б сделав нужные действия с USB, то получается слишком громоздкий код. Как быть ? Возможно придуман какой-то стандартный путь ? Или я вообще чего-то не понимаю, и неправильно рассуждаю изначально ?
МП
--------------------
Если у Вас нет практического опыта в данной теме- не вступайте в дискуссию и не пишите никаких теоретических рассуждений! Заранее спасибо !
|
|
|
|
|
 |
Ответов
|
Aug 26 2015, 11:03
|

Ally
     
Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050

|
Цитата(ViKo @ Aug 26 2015, 13:28)  Кейловская CMSIS-RTOS RTX попроще будет, а Сигналы есть. Например, можно ждать сигналы от нескольких задач. Просто, красиво, удобно. Код for (;; ) { osSignalWait(0x0003, osWaitForever); // Ждать сигналы от ПЛИС и Main ... Есть и во FreeRTOS механизм передачи сигналов от нескольких задач. Но только это уже занос, уклон в сторону автоматов. Тогда от RTOS мало смысла остается.
|
|
|
|
|
Aug 26 2015, 12:16
|

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

|
QUOTE (AlexandrY @ Aug 26 2015, 15:08)  Я до мьютексов даже не добрался. Не знаю как их применять и зачем они вообще нужны. Поддержу. Я как-бы когда-то пользовал, но потом по мере роста разумения похерил за ненедобностью. Последним толчком, лет 12 назад, к пониманию ненадобности была именно FreeRTOS, где их де-факто нет, ибо реализованы были ввиде макросов на очередях.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
Сообщений в этой теме
MiklPolikov Взаимодействие между задачами Aug 24 2015, 23:53 zltigo QUOTE (MiklPolikov @ Aug 25 2015, 02:53) ... Aug 25 2015, 04:30 MiklPolikov Цитата(zltigo @ Aug 25 2015, 07:30) ... Aug 25 2015, 17:20  zltigo QUOTE (MiklPolikov @ Aug 25 2015, 20:20) ... Aug 25 2015, 17:24   MiklPolikov Цитата(zltigo @ Aug 25 2015, 20:24) Ничег... Aug 25 2015, 17:37    zltigo QUOTE (MiklPolikov @ Aug 25 2015, 20:37) ... Aug 25 2015, 17:56 ViKo Цитата(MiklPolikov @ Aug 25 2015, 02:53) ... Aug 25 2015, 18:17 aaarrr Цитата(MiklPolikov @ Aug 25 2015, 02:53) ... Aug 25 2015, 18:45 AlexandrY Цитата(MiklPolikov @ Aug 25 2015, 02:53) ... Aug 25 2015, 19:16 ViKo У меня мьютекс один, ограничивает доступ к буферу ... Aug 26 2015, 12:46 zltigo QUOTE (ViKo @ Aug 26 2015, 15:46) У меня ... Aug 26 2015, 17:11
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|