C Programmazione

Thread POSIX con programmazione C

Thread 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; quindi, sono considerati processi leggeri. Il thread non è indipendente, proprio come un processo. Piuttosto lavorano insieme per compilare e creare un processo. Tuttavia, proprio come un processo, anche un thread ha il proprio PC (Program Counter) e un particolare registro impostato insieme allo spazio dello stack.

Discussione POSIX:

Nelle piattaforme Linux, i linguaggi C e C++ pthread API standard per tutti i tipi di funzioni relative ai 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 questo pthread.h file di intestazione nello script inizialmente. Questo aiuterà nell'uso delle funzioni della libreria pthreads. Per eseguire il file c, i seguenti comandi

$ cc -pthread file.c

O

$ cc -lpthread file.c

Le funzioni definite nella libreria pthreads possono includere:

pthread_create:

Serve per creare un nuovo thread

Parametri di pthread_create:

Ha i seguenti parametri:

filo: Questo funge da puntatore a un valore intero senza segno. Restituisce l'id del thread che si è formato.

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

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

discussione: Questo parametro è un puntatore a void con diversi argomenti 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:

È usato per terminare o terminare un thread

Parametri di pthread_exit:

Il metodo utilizzato alla fine del metodo/processo accetta un parametro retval che è un indicatore obbligatorio di un numero intero. Memorizza lo stato del thread in modo tale che il thread termini. Deve essere una variabile globale. Ciò consentirà al thread successivo in linea di unirsi al 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:

I parametri qui utilizzati sono:

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

thread_return: È il parametro che funge da puntatore alla particolare posizione 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 utilizzato per separare un thread. Non ha bisogno di alcun thread per unirsi alla terminazione. Tutte le risorse in esecuzione nel thread vengono rilasciate non appena il thread viene scollegato.

Parametro di pthread_detachr:

È il parametro che accetta il parametro obbligatorio id thread. È d'obbligo essere distaccati.

Sintassi:

>> int pthread_detach(pthread_t thread);

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
// Chiamare il thread POSIX, un must nei sistemi UNIX/LINUX
pthread_t tid[2];
void*Funzione(void *arg)

lungo senza segno i = 0;
pthread_t id = pthread_self();
if(pthread_equal(id,tid[0]))
// Condizione affinché i thread siano uguali

printf("\n Il primo thread è in elaborazione\n");

altro

printf("\n Secondo thread in elaborazione \n");

// Thread in elaborazione.
for(i=0; i<(0x255);i++);
restituisce NULL;

int main (vuoto)

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

errore = pthread_create(&(tid[i]), NULL, &Funzione, NULL);
se (errore != 0)
printf("\n Impossibile creare il thread :[%s]", strerror(error));
altro
printf("\n Il thread è stato creato con successo\n");
// Thread creato con successo
io++;

dormire(5);
restituisce 0;

Il codice è scritto in un editor di testo; puoi usare 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 si chiamava test.c. Per accedervi, digita il seguente comando nella finestra del terminale:

$ sudo gcc test.c -lpthread

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

$ ./un.su

Uscita prevista:

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

Conclusione:

Il tutorial ha coperto il processo di base della creazione del thread e ha discusso tutti i metodi comunemente usati nella sua creazione. Il thread è un'istanza di un processo. Abbiamo quindi guidato gli utenti attraverso i famosi parametri utilizzati da ciascun processo insieme alle sintassi in modo che possano utilizzarli nei loro programmi per computer. Qui abbiamo anche condiviso un codice di esempio come esempio 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 anche per qualsiasi altro compilatore in base alle loro preferenze.

Come installare League Of Legends su Ubuntu 14.04
Se sei un fan di League of Legends, questa è un'opportunità per testare League of Legends. Nota che LOL è supportato su PlayOnLinux se sei un utente L...
Installa l'ultimo gioco di strategia OpenRA su Ubuntu Linux
OpenRA è un motore di gioco di strategia in tempo reale gratuito/libero che ricrea i primi giochi di Westwood come il classico Command & Conquer: Red ...
Installa l'ultimo Dolphin Emulator per Gamecube e Wii su Linux
L'emulatore Dolphin ti consente di giocare ai giochi Gamecube e Wii scelti su Personal Computer Linux (PC). Essendo un emulatore di giochi liberament...