Discussione posix con programmazione C

Discussione posix con programmazione C
Un thread è una piccola istanza in esecuzione all'interno di un processo. I thread si combinano per creare un processo e hanno alcune proprietà del processo; Pertanto, sono considerati processi leggeri. La discussione non è indipendente, proprio come un processo. Piuttosto lavorano insieme per compilare e creare un processo. Tuttavia, proprio come un processo, un thread ha anche il proprio PC (contatore del programma) e un particolare registro insieme allo spazio dello stack.

Posix thread:

In piattaforme Linux, le lingue C e C ++ Phread Standard API per tutti i tipi di funzioni correlate al thread. È anche noto come thread POSIX che consente agli utenti di creare molti thread per il flusso di processi simultanei. È meglio utilizzato in sistemi o processori multi-core per implementare thread sul kernel per ottenere il sistema.

Implementazione:

È necessario includere questa pchread.H File di intestazione nello script inizialmente. Ciò contribuirà a utilizzare le funzioni della libreria PThreads. Per eseguire il file C, i seguenti comandi

$ cc -phread file.C

O

$ cc -lpthread file.C

Le funzioni definite nella libreria PThreads possono includere:

pthread_create:

Viene utilizzato per creare un nuovo thread

Parametri di pthread_create:

Ha i seguenti parametri:

filo: Questo funge da puntatore a un valore intero non firmato. Restituisce l'ID thread del thread che si forma.

Attributi: Questo parametro funge da puntatore a una struttura. Viene utilizzato per definire gli attributi di un thread che può essere la politica di programmazione e l'indirizzo di stack, ecc.

start_routine: Questo parametro è un puntatore a una subroutine implementata dal thread.

discussione: Questo parametro è un puntatore da annullare con argomenti diversi alla funzione predefinita all'inizio dell'argomento

Sintassi:

>> int pThread_create
(pthread_t * thread, const pThread_attributes_t * attr, void * ( * start_routine) (void *), void * argomento);

pThread_exit:

Viene utilizzato per terminare o terminare un thread

Parametri di pthread_exit:

Il metodo utilizzato alla fine del metodo/processo accetta un retval di parametro che è un indicatore obbligatorio a un numero intero. Memorizza lo stato del thread in modo tale che il thread termina. Deve essere una variabile globale. Ciò consentirà al thread successivo in linea di unire il thread se è disponibile.

Sintassi:

>> void pThread_exit (void *retval);

pThread_Join:

Questa è una funzione utilizzata al momento dell'attesa per la terminazione del thread.

Parametri per pThread_Join:

Il parametro usato qui è:

Thread_id: È l'ID del thread per il quale il thread in linea attende.

Thread_return: È il parametro che funge da puntatore alla posizione particolare in cui abbiamo definito lo stato di uscita.

Sintassi:

>> int pThread_join (pThread_t thread_identification, void ** thread_return);

pThread_self:

Questo è un metodo utilizzato per ottenere l'ID del thread attualmente in linea.

Sintassi:

>> pThread_t pThread_self (void);

pThread_Equal:

Questo metodo viene utilizzato per confrontare nel caso in cui due thread siano equivalenti o meno. Se due thread sono uguali, la funzione restituirà un valore diverso da zero in risposta.

Sintassi:

>> int pThread_equal (pthread_t thread1, pthread_t thread2);

pThread_cancel:

Questo metodo viene utilizzato per inviare una richiesta di cancellazione

Parametro per pthread_cancel:

Il parametro utilizzato è obbligatorio da inserire per annullare la richiesta.

Sintassi:

>> int pThread_cancel (pthread_t threadname);

pThread_detach:

Questo è il metodo che viene utilizzato per separare un thread. Non ha bisogno di alcun thread per partecipare alla terminazione. Tutte le risorse in esecuzione nel thread vengono rilasciate non appena il thread viene staccato.

Parametro di pthread_detachr:

È il parametro che accetta l'ID thread parametro obbligatorio. È un must da staccare.

Sintassi:

>> int pThread_detach (thread pThread_t);

Codice d'esempio:

Ecco un codice di esempio per mostrare l'implementazione della funzione sopra descritta. Abbiamo usato un compilatore GCC per compilare queste funzioni.

// programma per mostrare le funzioni del thread
#includere
#includere
#includere
// Chiamando il thread Posix, un must-have in Unix/Linux Systems
pThread_t tid [2];
Funzione void *(void *arg)

senza segno Long i = 0;
pThread_t id = pThread_self ();
if (pThread_equal (id, tid [0])
// condizione per i thread uguali

printf ("\ n il primo thread viene elaborato \ n");

altro

printf ("\ n secondo thread viene elaborato \ n");

// thread da elaborare.
per (i = 0; i<(0x255);i++);
restituire null;

int main (vuoto)

int i = 0;
Errore int;
// Creazione di un nuovo thread
mentre io < 2)

errore = pThread_create (& (tid [i]), null, & function, null);
if (errore != 0)
printf ("\ n non è stato in grado di creare il thread: [%s]", Strerror (errore));
altro
printf ("\ n thread è stato creato correttamente \ n");
// thread creato correttamente
I ++;

sonno (5);
restituzione 0;

Il codice è scritto in un editor di testo; Puoi utilizzare qualsiasi editor in base alla tua scelta. Quindi salvalo nella tua posizione preferita.

Il file viene salvato nel sistema informatico e quindi si accede. Il file salvato da noi è stato nominato test.C. Per accedervi, digitare il seguente comando nella finestra del terminale:

Test $ sudo GCC.c -lpThread

Quindi, per eseguire l'output, digitare il comando seguente:

$ ./UN.fuori

Output previsto:

L'output che abbiamo ottenuto in risposta al codice precedente è mostrato di seguito:

Conclusione:

Il tutorial ha coperto il processo di base della creazione di thread e ha discusso di tutti i metodi comunemente usati nella sua creazione. Il thread è un'istanza di un processo. Abbiamo quindi accompagnato gli utenti attraverso i famosi parametri utilizzati da ogni processo insieme alle sintassi in modo che possano utilizzarli nei loro programmi per computer. Qui abbiamo anche condiviso un codice di esempio come campione per comprendere meglio l'idea di creare un programma C in Posix. Il compilatore che abbiamo usato era GCC nel sistema Linux. Gli utenti possono optare per qualsiasi altro compilatore in base alle loro preferenze.