Gli
eventi di VxWorks sono un meccanismo di comunicazione tra task e
interrupt routine (ISR), tra task ed altri task o task e oggetti
VxWorks. Gli oggetti VxWorks sono definiti anche risorse e
includono i semafori e le code di messaggi. Gli eventi possono essere
inviati dai task, dalle ISR e dalle risorse, mentre possono essere
ricevuti solo dai task.
Affinché
un task possa ricevere un evento è necessario che si registri sulla
risorsa e affinché una risorsa possa inviare un evento è indispensabile
che sia libera. Gli eventi assomigliano ai segnali, nel senso
che solo i task registrati possono ricevere un evento da una
particolare risorsa, ma al contrario di quello che succede con i
segnali, uno stesso task può essere registrato per ricevere gli eventi di più risorse:
uno stesso task può attendere che un determinato semaforo diventi
libero e che un messaggio arrivi in una particolare coda di messaggi.
Un'altra
differenza degli eventi rispetto ai segnali consiste nel fatto che sono
sincroni: un task in attesa di un particolare evento rimane bloccato
finché l'evento non si verifica, ma una volta che l'evento è stato
ricevuto il task prosegue la propria esecuzione.
Un task può
rimanere in attesa anche di un evento che non è collegato ad una
risorsa specifica, ma semplicemente inviato da un altro task o da una
ISR: in questo caso non è necessario che il task si registri per la
ricezione dell'evento, ma è sufficiente che chi lo invia conosca qual'è
il task interessato a riceverlo.
Infine due task non possono
registrarsi per ricevere un evento da una medesima risorsa: la
registrazione del secondo task comporta o la restituzione di un errore
o la de-registrazione automatica del primo task.
b66aacad-5df6-4848-8998-0b37e709c9fb|0|.0