Составители:
31
Атомарные операции могут быть использованы где угодно, но особенно по-
лезны они в двух случаях:
• между процедурой обработки прерывания (ISR) и потоком;
• между двумя потоками.
Так как ISR может вытеснить поток в любой точке, то естественный
путь защитить поток от прерываний – запретить все прерывания. Для сис-
тем реального времени это плохо, так как ведет не только к снижению про-
изводительности, но и к возможной потере внешних событий. Использова-
ние атомарных функций позволяет решить данную проблему.
2.11. Синхронизация через сообщения
Сообщение представляет собой группу байт, значение которых имеет
смысл только для взаимодействующих потоков и не имеет какого-либо аб-
солютного значения для ядра операционной системы.
Таблица 2.7
Функция Описание
MsgSend() Послать сообщение и блокироваться до получения ответа
MsgReceive() Ожидать приема сообщения
MsgReply() Ответить на сообщение
MsgError() Возвратить код ошибки без передачи ответного сообщения
Потоки получают и отправляют сообщения, а также отвечают на них.
При этом состояния потоков изменяются. Передача сообщений между пото-
ками связана с блокировками, т. е. механизм синхронизации встроен в про-
MsgSend()
RECEIVE
blocked
READY
SEND
blocked
REPLY
blocked
MsgSend()
MsgReceive()
MsgReceive()
MsgReply() or
MsgError()
MsgReply() or
MsgError()
Поток А
Поток Б
Рис. 2.7
Страницы
- « первая
- ‹ предыдущая
- …
- 29
- 30
- 31
- 32
- 33
- …
- следующая ›
- последняя »
