Pthread_exit 3 c função

Pthread_exit 3 c função
“Você pode ter passado por muitas funções Posix C enquanto usa qualquer sistema operacional Linux. A função pthread_exit () é uma dessas funções POSIX. O Pthread_exit () é utilizado para encerrar a execução do tópico de chamada. O encadeamento de chamada é encerrado usando a função pthread_exit () e sua execução é suspensa usando a função pthread_join () até que o segmento de destino tenha concluído sua execução. Portanto, ele encerra o thread de chamada e envia status para qualquer thread que use o ID do thread do thread de terminação para chamar Pthread_join (). Dentro deste tutorial, daremos uma olhada no uso da função pthread_kill em c.”

Em primeiro lugar, você precisa fazer login no sistema Linux e iniciar seu terminal. Dentro do shell, tente criar um arquivo C usando o editor do VIM e nomeie Pthread_kill.c. Quando for aberto no editor Vim no modo de inserção, escreva as linhas de código abaixo.

Os arquivos de cabeçalho essenciais são incorporados nas três primeiras linhas de código e, em seguida, o cabeçalho da função para a função de mensagem de exibição, que aceita um ponteiro vazio, é declarado. Crie uma variável global depois disso e defina seu valor para 0. Duas variáveis ​​do tipo pthread_t denominadas thread_p & thread_s são declaradas. Pthread_t é um tipo de dados usado para identificar um thread que foi criado na função principal. Quando o programa faz chamadas de função que chamam uma identificação de threads, é necessário o valor retornado pela função pthread_create ().

Duas variáveis ​​de ponteiro do tipo de caractere que são usadas para armazenar a mensagem para os threads primários e secundários são definidos nas seguintes linhas de código. Dois números inteiros são então definidos, com valores de 100 e 200, respectivamente. Depois disso, fizemos dois tópicos separados, cada um dos quais usa o método de mensagem de exibição. Envie os identificadores e mensagens de encadeamento gerados individualmente para cada thread separadamente; Após essa impressão, a declaração é chamada, que é a mensagem antes do término dos threads. Quando saímos ou encerramos os encadeamentos, toda a execução é suspensa e nenhuma saída será exibida. A variável global é incrementada por 1 na função de mensagem de exibição.

Veja os arquivos e pastas disponíveis no diretório de trabalho inserindo o comando LS na linha de comando do terminal.

Digite os comandos listados abaixo para criar um arquivo que contém declarações relacionadas a roscas porque diferem das instruções de compilação padrão. O comando é iniciado com o compilador porque estamos usando o compilador GCC e o sistema operacional Linux. O interruptor -Phread é então empregado. Depois de especificar o nome do arquivo com o sinalizador -o, o arquivo de saída será criado com o nome solicitado.

Basta entrar no comando (./pthread Kill.fora) no terminal para executar o arquivo de saída e visualizar os resultados. Nenhuma declaração será executada após a declaração anterior, pois ambos os threads são encerrados usando a função pthread_exit. Assim que o encadeamento primário foi estabelecido, ele chama o método da mensagem de exibição, incrementando o valor da variável global de 0 a 1, que é então exibido. Semelhante a isso, um segundo fio é então chamado, que exibe o valor da variável global após um incremento, resultando em um valor de 2.

Agora crie outro arquivo de código de programação C usando o editor Vim e escreva o código nele. O nome do arquivo é pthread_exit.c.

Os arquivos de cabeçalho vitais são incorporados nas duas primeiras linhas do arquivo de código. A partir disso, uma variável global foi declarada e seu valor foi definido como 0. A função de exibição é então escrita e um parâmetro de tipo de ponteiro vazio é dado a ele. Todos os threads que criamos em nossa função principal executarão este código. O valor do argumento da variável ID do thread é armazenado na primeira linha da função. Agora que uma variável estática foi definida e definida como 0, seu valor será modificado dentro da função. Em seguida, imprimimos o ID do thread e os valores das variáveis ​​globais e estáticas após incrementá -las.

Use o compilador GCC para compilar o código C com a opção -thread e salve a saída na saída do pTHread.arquivo out. Apenas um thread pode concluir sua execução, pois usamos o mesmo ID do thread para gerar vários threads e depois sair do fio dentro do loop.

Aqui está a saída do arquivo após a compilação bem -sucedida. Isso significa que, se algum thread for encerrado usando uma declaração de saída, nenhum outro tópico será executado.

Cada encadeamento é gerado e executado corretamente se modificarmos ligeiramente o código alterando a instrução de saída e movendo a linha para fora do loop. Este é o pedaço de código fornecido no trecho abaixo:

Após a compilação e quando executarmos o arquivo de saída, a saída abaixo será gerada, o que mostra que todos os threads concluíram sua execução. A saída mostra que os valores das variáveis ​​globais e estáticas são iguais para todos os threads, o que significa que a mesma referência de encadeamento é usada.

Vamos mudar um pouco mais nosso código e comentar a instrução pthread_exit no final da função de exibição. Aqui está a tela do código:

Aqui está a captura de tela de saída do código acima. Apenas apenas três threads são executados; Você pode ver os valores das variáveis ​​globais e estáticas. O segundo e o terceiro tópicos têm os mesmos valores para ambos.

Conclusão

Este artigo é tudo sobre o uso da função pthread_kill em c para encerrar o processamento de um thread de chamada em um programa, mas o processo de rescisão da função de chamada deve ser interrompido por um tempo utilizando o método pthread_join () até que o método de destino seja realizado. Você pode fazer uso dos exemplos simples demonstrados acima para obter um entendimento claro.