How to synchronize with multiple events ?

Hi, How do I put a task to sleep and wake up on the appearance of several events, or on the appearance of the first event is, or on the appearance of all the events?

How to synchronize with multiple events ?

The best method is to have the task block on a queue, then have the data that is sent to the queue identify the event that was sent. Example give, struct x {     int Event;     int Data; } void task( void *pv ) { struct x rxData;     while(1)     {         xQueueReceive( Queue, &rxData, portMAX_DELAY );                 switch(rxData.Event)         {             case COMPORT : HandleComData( rdData.Data );                            break;             case SSI     : HandleSSIData( rxData.Data );                            break;             default      : HandleUnknownEvent( rxData.Event, rxData.Data );                            break;         }     } }

How to synchronize with multiple events ?

Nice ! Thanks ;) But if we want all the events raised to wake up ?