ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
19 июля
13979 Топик полностью
Max_QNX (27.08.2004 14:19, просмотров: 1) ответил Алексей Мусин на Ну уж прямо "вся система будет заторможена"
по порядку ну конечно заторможены будут только те задачи которым требуется ресурс - но обсуждаем то мы систему в которой все задачи требуют некий ресурс - в даннос случае i2c или spi как в голосном топике. Это и дало мне право сказать "все". мне трудно спорить именно по uCos, но обычно семафор ставят в тех случаях когда хотят ограничить нагрузку на что-то. то есть например одновременный доступ к памяти или к диску не более чем 5-7-200-... клиентов. мутекс даёт единоличное право выполнять действия одному потоку в отношении чего-либо. в случае с потоком - если задача ожидает немедленного ответа - конечно она может впасть в блокирующее чтение и сидеть там до таймаута или до получения данных. ну а если задаче надо опрашивать что-то и аварии записывать в eeprom? ответ от еепрома будет только через надцать там милисекунд. и что? всё это время сидеть и держать шину? и никто ничего не сможет вычитать записать потому что мы сидим? гораздо логичнее поставить в очередь и взвести себе таймер. По таймеру получить ответ. Так а шине не будет затыков. В случае если ответ не нужет - существует таймаут. Если ответа нет - есть 2 пути - или взвести таймер и попытаться ещё раз (и вести счёт попыткам), или ждать до таймаута (до тех пор пока это ещё возможно и нужно).