void test_reader_list_kill(){ reader_list_initialize(); reader_t* reader_ritardoUnitario_bufferGenerico=reader_initialize("Reader 1",1,10); reader_t* reader_ritardo5_bufferUnitario=reader_initialize("Reader 2",5,1); add_twoReaders(reader_ritardoUnitario_bufferGenerico,reader_ritardo5_bufferUnitario); reader_list_kill(); ASSERT_BUFFER_CONTAINS_ONLY(reader_ritardoUnitario_bufferGenerico->buffer->read_buffer, (msg_t*)&POISON_PILL_MSG); ASSERT_BUFFER_CONTAINS_ONLY(reader_ritardo5_bufferUnitario->buffer->read_buffer, (msg_t*)&POISON_PILL_MSG); clean_buffer_reader(reader_ritardoUnitario_bufferGenerico, reader_ritardo5_bufferUnitario); remove_twoReaders(reader_ritardoUnitario_bufferGenerico,reader_ritardo5_bufferUnitario); reader_list_destroy(); }
void *dispatch_message(){ int poison=1; //finchè non è arrivata la poison pill while(poison){ msg_t* message=provider_buffer_read(); if (message!=NULL){ if (strcmp(message->content,"POISON_PILL_MSG")==0){//è una poison pill reader_list_kill();//uccido i reader nella lista poison=0; }else{ reader_list_broadcast(message); sleep(1); } } } printf("\ndispatcher terminato=> POISON PILL inoltrata"); pthread_exit(NULL); }