Funzione pthread_create 3 c

Funzione pthread_create 3 c
“All'interno di un processo, un thread è un flusso di un piccolo canale. Poiché condividono molte delle proprietà dei processi, i thread sono spesso considerati operazioni leggere. Poiché i thread, ad eccezione dei processi, non sono completamente autonomi, condividono i loro script, dati e funzionalità del sistema operativo come file aperti e segnali con altri thread. Tuttavia, un thread, come un'attività, ha il contatore del programma (PC), l'impostazione del registro e la memoria impilare. Diverse sessioni all'interno di un browser, ad esempio, potrebbero rappresentare thread distinti."

MS Word utilizza molti thread, uno per la formattazione testuale, un altro per l'elaborazione degli input e così via. All'interno di questo articolo, ti faremo conoscere l'uso della funzione PThread_Create 3 C per creare un thread usando il sistema Kali Linux. Iniziamo ora all'interno del guscio di Kali Linux. Dobbiamo creare un nuovo file C all'interno del quale creeremo un programma C per i thread. Quindi, possiamo usare le istruzioni touch per creare con il titolo "Crea thread" e ".C ”estensione alla sua fine. Il file è stato creato correttamente secondo l'elenco delle istruzioni "LS" e mostra il contenuto di una directory di lavoro corrente.

Per aprire questo file in un editor VIM per creare codice, abbiamo utilizzato l'istruzione "VIM" come mostrato di seguito. Il comando deve contenere il nome completo di un file insieme alla parola chiave "VIM". L'editor VIM vuoto aprirà il tuo file C correttamente.

Esempio 01

È tempo di creare un esempio per la funzione pThread_create per creare un nuovo thread all'interno dello script C. Per questo, inizieremo il nostro codice C con le principali librerie standard incluse con la parola chiave "#include". Per il flusso di input e output standard all'interno del programma, abbiamo bisogno di "STDIO.Biblioteca H "insieme a" stdlib.h "e" unistd.Biblioteca H ".

Insieme a questo, abbiamo usato la "pthread.H "libreria di C per utilizzare le funzioni del thread nel nostro codice C. Senza questa libreria, l'uso delle funzioni PThread potrebbe causare errori. Abbiamo inizializzato una variabile globale "globale" e abbiamo assegnato un valore "0" all'inizio del codice dopo le intestazioni. Questa variabile verrà utilizzata nel resto del codice.

Iniziamo con la spiegazione di questo codice con la funzione principale () di questo codice. Il thread principale ha dichiarato una variabile variabile "var" e "threadid" per il thread usando la parola chiave "pthread_t."Il ciclo" per "di 5 iterazioni è stato utilizzato per creare un thread 5 volte con l'uso della funzione" pthread_create "al suo interno. L'abbiamo passata una variabile "threadid" per contare il numero del thread e passare una funzione thread "func" al suo interno con lo stesso puntatore variabile "threadid".

Dopo la creazione di 5 thread che utilizzano il ciclo "per", saremo fuori dal loop e la funzione "pthread_exit" verrà utilizzata per uscire dalle esecuzioni del thread e terminare il programma. Ora, diamo un'occhiata alla funzione del puntatore del thread "Func", prendendo il thread "Id" dal metodo principale () per il titolo di conseguenza. L'argomento "id" approvato dal principale () sarebbe salvato al puntatore "threadid" del tipo intero. Una variabile intera statica "var" è inizializzata su 0 e abbiamo pubblicato il valore delle variabili "var" e "globale."

A causa della post-incremento, il valore sarebbe incrementato per primo, i.e., "Id" e poi salvato alla variabile. L'istruzione Printf è qui per visualizzare l'ID thread, il valore della variabile statica e il valore della variabile globale alla volta. I valori per i thread sarebbero 2, 4, 6, 8 e 10. Salviamo solo il nostro codice e vediamo cosa succede dopo la compilation.

In primo luogo, compileremo questo codice C con il compilatore "GCC" insieme al comando "-lpThread" per la funzione thread Linux contenente l'opzione "-o" per creare il file di esecuzione "CreateThread.fuori, "come mostrato di seguito. Il file è stato compilato e creato correttamente.

Eseguiamo il file di esecuzione senza errori compilati con "./"Comando come mostrato di seguito. Le uscite di 5 thread hanno visualizzato l'ID thread, il valore della variabile statica e il valore variabile globale con l'incremento di 2.

Esempio 02

All'interno di questo esempio, useremo lo stesso formato di codice. A partire dal metodo principale (), abbiamo creato due variabili intera e una variabile "thread_id" con la parola chiave "pthread_t". La variabile "threadID" ha preso le informazioni di un metodo principale () utilizzando la funzione "pThread_self ()" e passandola alla funzione "func" che è stata utilizzata per creare un nuovo thread tramite la funzione "pthread_create ()". Qualunque cosa il thread appena creato restituirebbe verrà salvato nella variabile "cagnaturna" e controllato all'interno dell'istruzione "if". Se si verificano qualche errore, utilizzerà l'istruzione printf per visualizzarlo e il programma verrà terminato. Altrimenti, dopo la creazione di un thread, il programma dorme per 1 secondo e utilizza l'istruzione printf per visualizzare che il thread è stato creato correttamente.

Successivamente, il programma verrà terminato. La funzione thread func () visualizzerà le sue informazioni sul thread utilizzando la funzione pThread_self () e i dati della funzione principale () passati dall'argomento come mostrato usando la funzione printf.

Abbiamo compilato questo file e creato un file di codice sorgente di esecuzione con l'istruzione "GCC".

Dopo l'esecuzione, abbiamo ottenuto l'ID informativo della funzione func () e anche il thread principale ().

Ogni volta, l'esecuzione di questo programma genererà dati diversi per entrambi i thread.

Conclusione

I thread sono un approccio comune per promuovere la sincronicità nelle applicazioni. I thread funzionano più rapidamente delle attività per una serie di fattori, i.e., La generazione di thread è molto più veloce, il cambio di contesto tra i thread sembra essere molto più veloce, la terminazione del thread è molto più semplice e l'interazione del thread è significativamente più veloce. All'interno di questo articolo, abbiamo discusso dell'uso della funzione pThread_create insieme ad alcune altre funzioni di thread per visualizzarlo. Speriamo che vi piaccia.