Pthread_create 3 c função

Pthread_create 3 c função
“Dentro de um processo, um fio é um pequeno fluxo de canal. Como eles compartilham muitas das propriedades dos processos, os threads são frequentemente considerados operações leves. Como os threads, com exceção dos processos, não são completamente independentes, eles compartilham seus scripts, dados e recursos do sistema operacional, como arquivos e sinais abertos com outros threads. No entanto, um tópico, como uma tarefa, tem seu contador de programas (PC), configuração do registro e memória de empilhamento. Várias sessões dentro de um navegador, por exemplo, podem representar threads distintos.”

MS Word usa muitos threads, um para formatação textual, outro para processar entradas e assim por diante. Neste artigo, informaremos sobre o uso da função Pthread_create 3 C para criar um thread usando o sistema Kali Linux. Vamos começar dentro da concha de Kali Linux agora. Precisamos criar um novo arquivo C no qual criaremos um programa C para threads. Então, podemos estar usando a instrução de toque para criar com o título "Criar thread" e ".Extensão C ”no final. O arquivo foi criado com sucesso conforme a lista de instruções "LS" e mostra o conteúdo de um diretório de trabalho atual.

Para abrir este arquivo em um editor do VIM para criar código, usamos a instrução "vim", como mostrado abaixo. O comando deve conter o nome completo de um arquivo junto com a palavra -chave "vim". O editor VIM vazio abrirá seu arquivo C com sucesso.

Exemplo 01

É hora de criar um exemplo para a função pthread_create para criar um novo thread dentro do script c. Para isso, iniciaremos nosso código C com as principais bibliotecas padrão incluídas na palavra -chave "#include". Para fluxo padrão de entrada e saída dentro do programa, precisamos do “stdio.biblioteca H ”junto com o“ stdlib.h "e" unistd.Biblioteca H ”.

Junto com isso, estamos usando o “pThread.Biblioteca H ”de C para fazer uso de funções de threads em nosso código C. Sem esta biblioteca, o uso de funções de pTHread pode causar erros. Inicializamos uma variável global "global" e atribuímos um valor "0" no início do código após os cabeçalhos. Esta variável será utilizada no restante do código.

Vamos começar com a explicação deste código com a função principal () deste código. O encadeamento principal está declarando uma variável "var" e "ThreadID" para o thread usando a palavra -chave "pthread_t.”O loop“ for ”de 5 iterações foi usado para criar um tópico 5 vezes com o uso da função“ pthread_create ”. Estamos passando uma variável "ThreadID" para contar o número do thread e passá -lo uma função de thread "func" dentro dela com o mesmo ponteiro variável "ThreadID".

Após a criação de 5 threads usando o loop "for", estaremos fora do loop, e a função "pthread_exit" será usada para sair das execuções do thread e encerrar o programa. Agora, vamos dar uma olhada na função do ponteiro do thread "func", pegando thread "id" do método main () para se tocar de acordo. O argumento "id" passado pelo principal () seria salvo no ponteiro "ThreadId" do tipo inteiro. Uma variável inteira estática “VAR” é inicializada para 0, e estamos pós -incrementando o valor das variáveis ​​“VAR” e “Global.”

Devido ao pós-incremento, o valor seria incrementado primeiro, eu.e., "ID", e depois salvo para a variável. A instrução printf está aqui para exibir o ID do thread, o valor da variável estática e o valor da variável global por vez. Os valores para threads seriam 2, 4, 6, 8 e 10. Vamos apenas salvar nosso código e ver o que acontece após a compilação.

Em primeiro lugar, estaremos compilando esse código C com o compilador "GCC", juntamente com o comando "-lpThread" para a função Linux Thread contendo a opção "-o" para criar o arquivo de execução "CreateThread.fora ”, como mostrado abaixo. O arquivo foi compilado e criado com sucesso.

Vamos executar o arquivo de execução sem erros compilado com o “./”Comando como mostrado abaixo. As saídas de 5 encadeamentos estão exibindo o ID do encadeamento, o valor da variável estática e o valor variável global com o incremento de 2.

Exemplo 02

Dentro deste exemplo, usaremos o mesmo formato de código. A partir do método Main (), criamos duas variáveis ​​inteiras e uma variável "Thread_id" com a palavra -chave "pthread_t". A variável "ThreadID" tem recebido informações de um método Main () usando a função "pthread_self ()" e passando -a para a função "func" que foi usada para criar um novo thread através da função "pthread_create ()". Qualquer que seja o tópico recém -criado retornará para a variável "CreateReturn" e verificada na instrução "se". Se ocorrer algum erro, ele usará a instrução printf para exibir isso e o programa será encerrado. Caso contrário, após a criação de um tópico, o programa dorme por 1 segundo e usa a instrução printf para exibir que o tópico foi criado com sucesso.

Depois disso, o programa será encerrado. A função Func () Thread exibirá suas informações de thread usando a função pthread_self () e os dados da função principal () passada por argumento, como mostrado usando a função printf.

Compilamos este arquivo e criamos um arquivo de código -fonte de execução com a instrução "GCC".

Após a execução, obtemos o ID de informações da função func () e o thread main () também.

Cada vez, a execução deste programa gera dados diferentes para ambos os threads.

Conclusão

Os threads são uma abordagem comum para promover a sincronicidade em aplicações. Os tópicos são mais rápidos que as tarefas para uma variedade de fatores, eu.e., A geração de threads é muito mais rápida, a troca de contexto entre os threads parece ser muito mais rápida, a terminação do encadeamento é muito mais fácil e a interação do thread é significativamente mais rápida. Neste artigo, discutimos o uso da função pthread_create junto com algumas outras funções de thread para exibir que. Esperamos que você goste.