Começamos a implementar este artigo para criar um arquivo C recém -gerado. Este arquivo pode ser criado usando a instrução "toque" do Ubuntu dentro de seu shell. É muito fácil fazê -lo como fizemos no comando mostrado na captura de tela em anexo. Existem vários editores internos disponíveis no Ubuntu para simplesmente abrir e editar o código C. Utilizamos o editor interno "Nano" em um terminal do Ubuntu 20.04 Usando a palavra -chave "nano" na instrução.
Exemplo 01:
Então, estamos iniciando nosso primeiro exemplo de uso da função pthread_self () no código C para obter o "id" de um tópico no Ubuntu 20.04. Nós inicializamos o código com cabeçalhos simples. Esses cabeçalhos são as necessidades do código C. Sem esses cabeçalhos, nosso código não usa utilidade e não conseguiremos obter o resultado necessário. Incluímos o cabeçalho "stdio" para pegar o entrada de entrada padrão em nosso código. O arquivo de cabeçalho da biblioteca padrão também é usado. Enquanto isso, o arquivo de cabeçalho principal é "pthread", que foi incluído para usar a biblioteca de thread Posix padrão e suas funções no código C.
Depois que as bibliotecas estiverem incluídas, usamos a função de encadeamento definida pelo usuário chamada "Task", tomando referência de ponteiro ao "id" de um tópico criado na função principal. Dentro desta função de tarefa, utilizamos a cláusula Printf para produzir uma declaração mostrando que estamos executando o thread com um determinado “id."O tópico" ID "que foi obtido com o uso da função" pthread_self "nesta declaração será exibido junto com o texto no shell através da cláusula" printf ".
A função "pthread_exit" é utilizada aqui para sair do encadeamento criado e retornar nulo à função principal, como mostrado pela cláusula "retornar" da função "Tarefa". Aí vem o principal código de execução de um arquivo. A execução do código C sempre será iniciada a partir de sua função principal (). A função Main () está usando a variável "pthread_t" do POSIX para obter o ID de um encadeamento criado pela função "pthread_create" dentro do "Th" Mutável. A cláusula simples "Printf" é eliminada aqui para produzir no terminal que a função principal está executando ou executando no momento. Depois disso, a função "pthread_create" está aqui para criar um novo tópico. A variável “Th” foi referenciada aqui para identificar este tópico por seu ID e obter parâmetros nulos. A função "Tarefa" foi chamada aqui para usá -la como executora de threads ou mostrar informações sobre o ID do thread. A função de tarefa não está assumindo argumentos de acordo com o nulo. Depois que a função "Tarefa" é executada e devolvida "NULL", a função pthread_join () é usada aqui para parar ou pendurar o tópico de chamada enquanto aguarda o fio direcionado para concluir ou terminar. O código C para pthread_self () é concluído e compilado no shell.
Vamos usar o compilador "gcc" que já foi instalado no nosso Ubuntu 20.04 Sistema. Seu código não produzirá a coisa necessária no shell sem ele. Então, você deve obter o compilador "gcc". A compilação para pthread_self () é tremenda, e estamos prontos para executar o código. O código de execução é usado como uma única palavra -chave “./a.fora ”como abaixo. Você pode ver que a função principal foi executada primeiro e criou um tópico. Através deste tópico, a função "Tarefa" é chamada e exibe o ID do thread no shell. A função da tarefa foi concluída e o encadeamento principal () foi encerrado. É assim que a função “pthread_self” funciona.
Exemplo 02:
Vamos dar outra ilustração para dar uma olhada na função "pthread_self ()" no código C. Para isso, estaremos atualizando o mesmo "eu.Arquivo C ”usado apenas no exemplo acima. Abriremos o arquivo dentro do editor do Ubuntu chamado "Nano", como mostrado.
O código é iniciado novamente com alguns cabeçalhos. O cabeçalho de saída de entrada padrão é utilizado para obter a entrada e exibi -lo. As bibliotecas “unistd” e “stdlib” são usadas para utilizar algumas funções padrão no código. A biblioteca "Pthread" é uma obrigação para utilizar aqui para usar as funções "POSIX" no código. Definimos o número de threads usando os "threads" do POSIX no código após as bibliotecas usando a instrução "se" e o uso da palavra -chave "#Define". É usado para restringir o número de threads usados no código para não mais de 3. Após a declaração de threads, usamos a função definida pelo usuário "exibição" do tipo de ponteiro foi declarada. Esta função leva o argumento "P" do tipo de ponteiro. A variável de tipo longa "id" é declarada.
Na linha seguinte, o valor da variável de ponteiro de referência é convertido para o tipo "longo" e foi atribuído à variável "ID.”A cláusula Printf usa o número do thread e o ID para exibir no shell usando“ LD ”e“ Lu ”no texto. Depois disso, o tópico foi saindo. Agora, a função principal () é declarada com dois argumentos. O "pthread_t" é usado para inicializar a lista "Th" com um tamanho de 3 threads usando "threads" já declarados. Então uma variável inteira "res" é declarada, e o loop "for" foi iniciado. Ele será executado até 3 vezes e três threads serão criados usando a função "pthread_create". Esta função utiliza os IDs de três threads consecutivamente, um após o outro, e a função de exibição usa esses IDs como argumento para apontar “P.”Se ocorrer algum erro devido ao método" exibir ", o tópico não está sendo concluído com sucesso. Ele retornará o erro às principais funções “res” variável. Se ocorrer um erro, a instrução "printf" exibirá esse erro usando a variável "res" na instrução "se". Depois disso, a declaração e o programa será encerrada.
Agora, é hora de salvar e compilar esse código C no sistema. Para salvar, use “Ctrl+S” enquanto estiver no editor. Use "Ctrl+X" para sair do editor de código C. Após o comando de compilação "GCC", o uso na concha foi bem -sucedido. Nós executamos este código com o “./a.instruções de fora, e a saída mostra os IDs de três threads diferentes consecutivamente.
Conclusão:
Este artigo foi abordado os exemplos simples e mais diretos do uso da função pthread_join () da biblioteca POSIX em C. Em primeiro lugar, explicamos o uso da função "pthread_join ()" da Posix na linguagem C. Depois disso, discutimos alguns dos exemplos para ilustrar seu trabalho no programa C. Temos fé de que todos os exemplos são notáveis e são facilmente implementados no editor Linux e são executados no shell.