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:
codice:
static struct server *srv;
mentre il codice della struttura è questo:
codice:
struct server
{
struct server *next;
int sport;
int sid;
struct in_addr saddr;
int active;
};
il thread è lanciato così:
codice:
thcontrolserver = pthread_create(&tid,NULL,ControlServerStatus,NULL);
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.
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.