У архітектурі, керованій подією, кожен компонент діє лише тоді, коли подія надсилається через систему.
Уявіть собі гіпотетичний автомобіль з педаллю гальма та гальмівним світлом.
- Гальмівні легкі повороти на , коли він отримує brake_on подія, і геть , коли він отримує brake_off подія.
- Педаль гальма надсилає подія гальма при натисканні на неї, а подія гальма - при відпуску .
Це все добре і добре, поки у вас не складеться ситуація, коли автомобіль увімкнено, коли вже натиснута педаль гальма . Оскільки гальмівний світло ніколи не отримував події гальма , він залишатиметься вимкненим - явно небажана ситуація. Увімкнення індикатора гальма за замовчуванням лише обертає ситуацію.
Що можна зробити, щоб вирішити цю "початкову проблему стану"?
EDIT: Дякую за всі відповіді. Моє запитання не стосувалося фактичного автомобіля. У автомобілях вони вирішували цю проблему, безперервно надсилаючи державу - тому в цій галузі не виникає проблем із запуском. У моєму програмному домені це рішення використовувало б багато зайвих циклів процесора.
EDIT 2: Окрім відповіді @ gbjbaanb , я збираюся створити систему, в якій:
- після ініціалізації гіпотетична педаль гальма надсилає подію зі своїм станом та
- після ініціалізації гіпотетичний гальмівний індикатор посилає подію, що вимагає події стану, від педалі гальма.
У цьому рішенні немає ніяких залежностей між компонентами, немає перегонових умов, немає черг на повідомлення, які стають несвіжими, і немає "головних" компонентів.
initialize
), яка містить необхідні дані датчика.