Home>>Gli eventi in VxWorks

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.


Aggiungi commento




  Country flag
biuquote
  • Commento
  • Anteprima
Loading


Calendario

<<  febbraio 2012  >>
lumamegivesado
303112345
6789101112
13141516171819
20212223242526
2728291234
567891011

View posts in large calendar

Archivio

Licenza d'uso
Eccetto dove diversamente specificato, i contenuti di questo sito sono rilasciati mediante:

Licenza Creative Common