praticamente il problema è questo: avvio il programma, c'è una fase di configurazione di una lista di server e poi tra le altre cose viene lanciato un thread che ha il compito di controllare l'impostazione active di ogni server.
la struttura è così dichiarata globale:mentre il codice della struttura è questo:codice:static struct server *srv;
il thread è lanciato così:codice:struct server { struct server *next; int sport; int sid; struct in_addr saddr; int active; };
tra le varie prove ho verificato che tutte le strutture globali vengono prese dal thread e se modifico quei parametri nel main queste modifiche sono rilevate.codice:thcontrolserver = pthread_create(&tid,NULL,ControlServerStatus,NULL);
Il problema è invece che le modifiche fatte a questa lista server non le rileva. In particolare devo verificare se active è stato posto a 0.
se nel thread scrivo if (srv[i].active), questo vale sempre 1 anche se lo pongo a zero da qualche altra parte.
Cosa posso fare? Help!
ps. in fase di configurazione active è inizialmente posto a 1.

Rispondi quotando