Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2009
    Messaggi
    20

    Gestione di SIGTERM e SIGINT per terminazione "gentile" di un server multithreaded.

    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

  2. #2
    se hai dei thread creati con i settaggi a default, quando muore il processo che li ha generati muoiono automaticamente anche loro.

    se vuoi che il processo che li ha generati non termini prima di loro come hai detto tu ti basta fare la pthread_join per ogni thread che hai creato nel processo principale

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.