Salve,
chiedo un parere/consiglio/aiuto a qualche anima buona che sappia aiutarmi a gestire al meglio la situazione accennata nel titolo.
Sto programmando in C e sto, appunto, creando un server multithreaded i cui thread worker vengono creati ad ogni connessione in ingresso e ciascuno destinato a gestire ogni client, fino alla loro disconnessione oppure fino alla terminazione del server.
In quest'ultimo caso, appunto, devo poter gestire segnali di SIGINT o SIGTERM inviati al processo: deve essere una terminazione "gentile" nel senso che tutti i thread worker devono poter gestire richieste pendenti dai client, prima di terminare. Ecco... non riesco a pianificare una buona strategia per implementare tutto ciò.
Non so se creare un thread handler dove attendere i segnali con una sigwait().. non capisco se alla ricezione dei segnali devo comunque inviare un'interruzione a ciascun worker con una pthread_kill()... se devo poi attenderli con la pthread_join() o non è necessario... insomma, sono un pò confuso..
Qualche goog boy sa darmi dei consigli risolutivi?
Grazie in anticipo a chi mi saprà rispondere.
Gabriele