Existe um tipo de sincronização que existe entre threads chamados bloqueios. Nesse caso, o thread precisa de exclusão mútua. Requer um tópico para executar de cada vez. Então, também um com o outro padrão comum necessário quando vários threads são interagidos. Eles são - esperando e sinalizando. Um tópico vai esperar até que outro tópico termine seu trabalho. Depois de concluir a execução deste tópico, o tópico de espera pode ser executado no processador. Para esse tipo de sincronização de threads, precisamos de outra técnica, chamada ocupada esperando algumas variáveis. Para isso, precisamos de um novo primitivo de sincronização chamado variáveis de condição.
Este conceito de tópico está disponível em diferentes sistemas operacionais. Mas iremos ao nome, variáveis de condição que são aplicadas como biblioteca PTHread no sistema operacional Linux
A função pthread_cond_wait () é um componente de espera. Esta função por padrão executa a ação de desbloqueio.
Exemplo de programação 1:
Neste exemplo de programação, veremos como essa função é executada:
#incluirSaída:
Explicação
Neste exemplo de programação, existem dois processos chamados de tópico pai e um tópico infantil. Aqui, o pai quer esperar pela criança. Depois de concluir a execução do processo infantil, o pai inicia sua execução.
Para o interior do main (), criamos o tópico pai e filho. O encadeamento infantil executa a função denominada criança (). Então o painel pai chama a função de junção. Esta junção () basicamente verifica se a criança está feita. Caso contrário, ele esperará usando a função pthread_cond_wait (). Quando a criança corre, chama a saída (). Quando a execução da criança é feita, o valor da variável feito será 1. Em seguida, ele chama o sinal na variável de condição. Depois disso, a execução do thread dos pais começará.
Sintaxe de espera e sinal:
void thr_exit ()O que acontece se não conseguirmos uma trava? Isso ocorrerá uma condição de corrida - despertar perdido.
Exemplo de programação 2:
Neste exemplo de programação, veremos outro uso de Pthread_cond_wait Fucking.
#incluirSaída:
Explicação
Aqui, veremos a aplicação da função pthread_cond_wait (). É como quando alguém quer encher o combustível dele. Ele tem que esperar até que seu carro seja preenchido com combustível. Para isso, criamos dois tópicos. Um para encher o combustível no carro e para o carro. Vamos definir duas funções. Um está abastecendo () função que determina quando encher o carro com combustível e outro é o veículo () função para obter combustível. O cara que quer encher o combustível em seu carro tem que esperar até que o combustível seja preenchido.
Dentro da função main (), criaremos dois threads para função () e para o veículo () função. Agora, criaremos uma variável de condição para aguardar a condição. Para isso, veremos a saída. Quando as funções completam sua execução, destruiremos esses tópicos.
Conclusão
A função pthread_cond_wait () notifica quando fizemos algum programa com a ajuda de vários threads. Esta função fará algumas variáveis de condição para lidar com esses threads. Na verdade, as características desta função dependem totalmente do princípio de Espere e sinalize teoria.