Programação C

Thread POSIX com programação C

Thread POSIX com programação C
Um thread é uma pequena instância em execução em um processo. Threads se combinam para criar um processo e têm algumas propriedades do processo; portanto, eles são considerados processos leves. Thread não é independente, assim como um processo. Em vez disso, eles trabalham juntos para compilar e criar um processo. Ainda assim, assim como um processo, uma thread também tem seu próprio PC (contador de programa) e um registro específico definido junto com o espaço da pilha.

Tópico POSIX:

Em plataformas Linux, as linguagens C e C ++ pthread API padrão para todos os tipos de funções relacionadas a threads. É também conhecido como thread POSIX, que permite aos usuários criar muitos threads para o fluxo de processos simultâneos. É melhor usado em sistemas ou processadores multi-core para implementar threads no kernel para alcançar o sistema.

Implementação:

É necessário incluir este pthread.h arquivo de cabeçalho no script inicialmente. Isto ajudará a usar as funções da biblioteca pthreads. Para executar o arquivo c, os seguintes comandos

arquivo $ cc -pthread.c

OU

arquivo $ cc -lpthread.c

As funções definidas na biblioteca pthreads podem incluir:

pthread_create:

É usado para criar um novo tópico

Parâmetros de pthread_create:

Possui os seguintes parâmetros:

fio: Isso atua como um ponteiro para um valor inteiro sem sinal. Ele retorna o id do thread que é formado.

atributos: Este parâmetro atua como um ponteiro para uma estrutura. É usado para definir atributos de um thread que pode ser a política de agendamento, endereço de pilha, etc.

start_routine: Este parâmetro é um ponteiro para uma sub-rotina implementada pelo thread.

argumento: Este parâmetro é um ponteiro para void com diferentes argumentos para a função pré-definida no início do argumento

Sintaxe:

>> int pthread_create
(pthread_t * thread, const pthread_attributes_t * attr, void * (* start_routine) (void *), void * argumento);

pthread_exit:

É usado para encerrar ou encerrar um tópico

Parâmetros de pthread_exit:

O método usado no final do método / processo aceita um retval de parâmetro que é um indicador obrigatório para um número inteiro. Ele armazena o status do thread de forma que o thread termine. Deve ser uma variável global. Isso permitirá que o próximo tópico da fila entre no tópico se estiver disponível.

Sintaxe:

>> void pthread_exit (void * retval);

pthread_join:

Esta é uma função usada no momento de esperar pelo término do thread.

Parâmetros para pthread_join:

Os parâmetros usados ​​aqui são:

thread_id: É o ID do thread pelo qual o thread em linha espera.

thread_return: É o parâmetro que atua como um ponteiro para o local específico onde definimos o status de saída.

Sintaxe:

>> int pthread_join (pthread_t thread_identification, void ** thread_return);

pthread_self:

Este é um método usado para obter o id do tópico atualmente em linha.

Sintaxe:

>> pthread_t pthread_self (vazio);

pthread_equal:

Este método é usado para comparar no caso de dois threads serem equivalentes ou não. Se dois threads forem iguais, a função retornará um valor diferente de zero em resposta.

Sintaxe:

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

pthread_cancel:

Este método é usado para enviar um pedido de cancelamento

Parâmetro para pthread_cancel:

O parâmetro usado é obrigatório para ser inserido para cancelar a solicitação.

Sintaxe:

>> int pthread_cancel (pthread_t threadName);

pthread_detach:

Este é o método usado para separar um tópico. Não é necessário nenhum tópico para entrar no encerramento. Todos os recursos em execução no encadeamento são liberados assim que o encadeamento é desanexado.

Parâmetro de pthread_detachr:

É o parâmetro que aceita o parâmetro obrigatório id do thread. É necessário ser desapegado.

Sintaxe:

>> int pthread_detach (thread pthread_t);

Código de amostra:

Aqui está um exemplo de código para mostrar a implementação da função descrita acima. Usamos um compilador gcc para compilar essas funções.

// Programa para mostrar as funções do thread
#incluir
#incluir
#incluir
// Chamando o thread POSIX, um must-have em sistemas UNIX / LINUX
pthread_t tid [2];
Função void * (void * arg)

sem sinal longo i = 0;
pthread_t id = pthread_self ();
if (pthread_equal (id, tid [0]))
// Condição para threads sendo iguais

printf ("\ n O primeiro thread está sendo processado \ n");

senão

printf ("\ n O segundo thread está sendo processado \ n");

// Threads sendo processados.
para (i = 0; i<(0x255);i++);
return NULL;

int main (vazio)

int i = 0;
em terror;
// Criando um novo tópico
enquanto eu < 2)

erro = pthread_create (& (tid [i]), NULL, & Função, NULL);
if (erro != 0)
printf ("\ n Não foi possível criar o tópico: [% s]", strerror (erro));
senão
printf ("\ n Tópico foi criado com sucesso \ n");
// Tópico criado com sucesso
i ++;

dormir (5);
return 0;

O código é escrito em um editor de texto; você pode usar qualquer editor com base na sua escolha. Em seguida, salve-o em seu local favorito.

O arquivo é salvo no sistema do computador e depois acessado. O arquivo salvo por nós foi chamado de teste.c. Para acessá-lo, digite o seguinte comando na janela do terminal:

$ sudo gcc test.c -lpthread

Em seguida, para executar a saída, digite o seguinte comando:

$ ./uma.Fora

Resultado esperado:

A saída que obtivemos em resposta ao código anterior é mostrada abaixo:

Conclusão:

O tutorial cobriu o processo básico de criação de thread e discutiu todos os métodos comumente usados ​​em sua criação. Thread é uma instância de um processo. Em seguida, orientamos os usuários pelos famosos parâmetros usados ​​por cada processo, juntamente com as sintaxes, para que eles possam fazer uso deles em seus programas de computador. Aqui também compartilhamos um código de exemplo como uma amostra para entender melhor a ideia de criar um programa C em POSIX. O compilador que usamos foi o gcc no sistema Linux. Os usuários podem optar por qualquer outro compilador também com base em sua preferência.

Instale o último jogo de estratégia OpenRA no Ubuntu Linux
OpenRA é um motor de jogo de estratégia em tempo real Libre / Free que recria os primeiros jogos Westwood como o clássico Command & Conquer: Red Alert...
Instale o emulador Dolphin mais recente para Gamecube e Wii no Linux
O Dolphin Emulator permite que você jogue seus jogos de Gamecube e Wii escolhidos em computadores pessoais Linux (PC). Sendo um emulador de jogo disp...
Como usar o GameConqueror Cheat Engine no Linux
O artigo cobre um guia sobre como usar o mecanismo de cheat GameConqueror no Linux. Muitos usuários que jogam no Windows costumam usar o aplicativo “C...