Алексей Мусин (27.08.2004 13:56, просмотров: 1) ответил Max_QNX на пока семафор взведён - все потоки ждущие его
Ну уж прямо "вся система будет заторможена" "заторможены" (suspended) будут только те задачи, которым нужен ресурс.
Про семафор и мутекс. Знаю, что в uCOS появился этот сервис (mutex), но мы делаем по-старинке: при освобождении ресурса задача вызывает OSSemPost, при ожидании захвата ресурса - OSSemPend. Ессно, есть таймаут (на всякий пожарный).
Я не спорю, мой вариант более "жесткий" - темп событий-запросов к ресурсу не "сглаживается" очередью.
Но давайте разберем, что же будет в случае, если есть задача, обслуживающая SPI.
Некая другая задача положила в очередь мессидж для отправки в шину. Что эта задача делает дальше? "Что-нибудь полезное"? А когда она обратится к первой задаче за ответом? А если ответа нет? А может ей ответ уже и не нужен к тому времени, когда он пришел?