Potresti voler comunicare i messaggi tra i processi nelle seguenti circostanze: al termine di un'attività, il processo figlio che è stato avviato dal processo genitore viene terminato. Il processo del bambino potrebbe aver eseguito un ciclo infinito. Quando si verifica un fallimento o un altro evento come il deadlock, un processo che fa parte di un gruppo deve fermare o segnalare gli altri processi all'interno del gruppo. Durante il coordinamento, due processi devono sincronizzare usando questa funzione. Ad esempio, un thread potrebbe utilizzare questo per influenzare il modo in cui un segnale viene trasmesso a un gruppo di altri thread. Di seguito è riportato di seguito la sintassi della funzione pthead_kill () di c. Segnale.Il file di intestazione h viene utilizzato perché tutte queste funzioni sono definite all'interno di questo file di intestazione.
#includereIl metodo PThread Kill () farebbe il controllo degli errori se il valore del segnale è stato impostato su 0, ma in realtà non è stato fornito alcun segnale a questa funzione per il thread. La funzione restituisce zero quando ha completato il suo lavoro. In caso contrario, un errore numerico viene restituito dalla funzione. Nessun segnale viene consegnato se il metodo pThread kill () fallisce. Se si verifica uno dei seguenti: non è stato possibile scoprire alcun thread corrispondente a quello indicato dall'ID thread fornito; Un numero di segnale non valido o non autorizzato è il valore dell'argomento del segnale.
Creiamo un file di programmazione C per comprendere la funzione pThread_kill (). Usando il comando VIM, dobbiamo creare un file di codice e salvare il file come pThread_kill.C. Per ottenere il risultato desiderato, digitare il comando successivo sullo schermo.
Ecco lo snippet di codice; Nelle prime righe di codice, abbiamo incluso i file di intestazione. Stampiamo semplicemente il messaggio dal thread che ora è in esecuzione nel metodo display_output. Abbiamo dichiarato una variabile di tipo intero nella funzione principale per rilevare lo stato del thread. La variabile NUM è stata inizializzata e il metodo di creazione del thread è stato approvato. PThread T viene utilizzato per identificare distintamente il filo. Quindi, usando il metodo Phread Crea, abbiamo generato un thread. In caso di fallimento, vedere se questo metodo restituisce un valore inferiore a 0, il che indicherebbe che il processo di creazione del thread non è riuscito.
Successivamente, il thread viene messo a dormire per due secondi chiamando il metodo di sonno. La procedura di uccisione PThread è stata quindi invocata e sono stati passati l'ID thread e il segnale Sigusr1. L'uso dei segnali SIGUSR1 e SIGUSR2 dipende dai requisiti dell'utente. Se si implementa un gestore del segnale per loro nell'applicazione che riceve il segnale, sono particolarmente utili durante la comunicazione tra processo. La riga successiva effettua un controllo condizionale che confermerà se il processo di uccisione del thread non è riuscito e se un messaggio di errore è stato stampato utilizzando l'istruzione Perror. In caso di successo, abbiamo chiamato il metodo PThread_Join, che offre un meccanismo semplice che consente a un'applicazione di attendere che un thread finisca. Successivamente abbiamo verificato se questo processo non è riuscito a stampare un messaggio di errore.
Chiudi l'editor VIM dopo aver inserito il codice premendo il tasto Escape e il comando: X. Compilare il codice successivamente utilizzando un compilatore C a scelta, assicurando che produca il file di output desiderato. Per creare il codice, digitare i comandi di seguito. Eventuali errori verranno visualizzati sullo schermo del terminale se si verificano. Nulla apparirà sullo schermo dopo una raccolta di successo.
Esegui il file di output per visualizzare il messaggio che il thread sta eseguendo, indicando che non c'erano errori dopo aver chiamato il thread per uccidere la funzione e che tutto è andato senza intoppi dalla creazione del thread tramite le funzioni di killew thread. Per ottenere il risultato desiderato, digitare il comando successivo sullo schermo.
Apportiamo alcune modifiche al codice, quindi digita il comando vim insieme al nome del file c. Per ottenere il risultato desiderato, digitare il comando successivo sullo schermo.
L'istruzione condizionale seguendo la modifica al metodo thread si unisce, in cui abbiamo verificato per vedere se il metodo di join thread aveva impostato la variabile di stato del thread su maggiore o uguale a 1, indicando un'operazione riuscita, è assente dalle righe del codice sottostante. Se questo ha esito positivo, visualizzeremo un messaggio sullo schermo che dice: "Thread che si unisce al successo.". Un'altra modifica minore nel codice è che la funzione thread_kill è ora inserita dopo l'istruzione condizionale della funzione thread_join. Ciò significa che la comunicazione tra process ora avrà luogo dopo la funzione thread_join.
Per aggiornare il file di output, ricompilare il codice. Questo comando compilerà il file C che contiene il codice thread. Per ottenere il risultato desiderato, digitare il comando successivo sullo schermo.
Esegui il codice ora e vedrai che ha stampato correttamente il metodo di giunzione thread sullo schermo. L'esecuzione del thread viene visualizzata prima della chiamata alla funzione di uscita di visualizzazione. Per ottenere il risultato desiderato, digitare il comando successivo sullo schermo.
Conclusione
Si tratta della dimostrazione di una funzione pThread_kill () di C per richiedere che un segnale sia diretto al thread scelto. Abbiamo discusso di un esempio dettagliato di C utilizzando la funzione pThread_kill al suo interno per inviare un segnale a un metodo particolare quando si tratta di terminazione di una funzione di chiamata. Questo è tutto su pThread_kill. Spero ti piaccia.