Tópico Posix:
Nas plataformas Linux, a API padrão C e C ++ PTHread para todos os tipos de funções relacionadas a threads. Também é conhecido como um thread POSIX que permite aos usuários criar muitos threads para processos simultâneos fluir. É melhor usado em sistemas ou processadores de vários núcleos 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. Isso ajudará a usar as funções da biblioteca Pthreads. Para executar o arquivo C, os seguintes comandos
$ CC -PTHREAD ARQUIVO.c
OU
$ CC -LPTHREAD ARQUIVO.c
As funções definidas na biblioteca Pthreads podem incluir:
pthread_create:
É usado para criar um novo tópico
Parâmetros de pthread_create:
Tem os seguintes parâmetros:
fio: Isso atua como um ponteiro para um valor inteiro não assinado. Ele retorna o ID do thread do thread que é formado.
atributos: Este parâmetro atua como um ponteiro para uma estrutura. É usado para definir atributos de um tópico que pode ser a política de agendamento e o endereço da pilha, etc.
start_routine: Este parâmetro é um ponteiro para uma sub -rotina implementada pelo tópico.
argumento: Este parâmetro é um ponteiro para anular com diferentes argumentos para a função predefinida 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 parâmetro retval que é um indicador obrigatório para um número inteiro. Ele armazena o status do fio de modo que o thread termine. Deve ser uma variável global. Isso permitirá que o próximo tópico na fila se junte ao tópico se estiver disponível.
Sintaxe:
>> void pthread_exit (void *retval);
pthread_join:
Esta é uma função usada no momento da espera pelo término do tópico.
Parâmetros para pthread_join:
O parâmetro usado aqui é:
Thread_id: É o id do tópico para o qual o tópico da fila 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 na fila.
Sintaxe:
>> pthread_t pthread_self (void);
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 precisa de nenhum tópico para entrar no término. Todos os recursos em execução no tópico são liberados assim que o tópico for destacado.
Parâmetro de pthread_detachr:
É o parâmetro que aceita o ID do encadeamento de parâmetro obrigatório. É uma obrigação para ser desapegado.
Sintaxe:
>> int pThread_detach (thread pthread_t);
Código de amostra:
Aqui está um código de exemplo 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 tópico
#incluir
#incluir
#incluir
// chamando o thread Posix, um must-have em sistemas Unix/Linux
pthread_t tid [2];
função void *(void *arg)
não assinado long i = 0;
pthread_t id = pthread_self ();
if (pthread_equal (id, tid [0]))
// condição para fios sendo iguais
printf ("\ n primeiro thread está sendo processado \ n");
outro
printf ("\ n Segundo thread está sendo processado \ n");
// tópicos sendo processados.
para (i = 0; i<(0x255);i++);
retornar nulo;
int main (vazio)
int i = 0;
em terror;
// Criando um novo tópico
enquanto eu < 2)
erro = pthread_create (& (tid [i]), null, & function, null);
if (erro != 0)
printf ("\ n não conseguiu criar o thread: [%s]", strerror (erro));
outro
printf ("\ n thread foi criado com sucesso \ n");
// Tópico criado com sucesso
i ++;
sono (5);
retornar 0;
O código está escrito em um editor de texto; Você pode usar qualquer editor com base em sua escolha. Em seguida, salve -o em seu local favorito.
O arquivo é salvo no sistema de computador e depois é acessado. O arquivo salvo por nós foi nomeado teste.c. Para acessá -lo, digite o seguinte comando na janela do terminal:
$ sudo gcc teste.c -lpThread
Em seguida, para executar a saída, digite o seguinte comando:
$ ./a.fora
Saída esperada:
A saída que obtemos em resposta ao código anterior é mostrada abaixo:
Conclusão:
O tutorial abrangeu o processo básico de criação de threads 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 junto com as sintaxes para que eles possam usá -los em seus programas de computador. Aqui também compartilhamos um código de exemplo como uma amostra para entender melhor a idéia de criar um programa C em Posix. O compilador que usamos foi o GCC no sistema Linux. Os usuários também podem optar por qualquer outro compilador com base em sua preferência.