Sem_getValue 3 C função

Sem_getValue 3 C função

A função sem_getValue () obtém o valor do semáforo. Ele recebe o valor ou é um semáforo nomeado ou semáforo sem nome. No caso do valor zero do semáforo, ele retorna um valor negativo. Quando alguns tópicos estão esperando no semáforo, ele retorna um valor negativo. O valor absoluto desse tipo de número inteiro negativo representa o número de threads aguardando no semáforo. A função "sem_getValue ()" é definida no "Semáforo. arquivo de cabeçalho H ”. Passaremos por essa função "sem_getValue ()" neste guia e demonstraremos os exemplos em que utilizamos essa função "sem_getValue ()" para fornecer uma boa compreensão desse conceito.

Sintaxe:

# int sem_getValue (sem_t * SEM, int * value);

Exemplo 1:

Os exemplos deste guia funcionarão com o Ubuntu 20.04. Para executar esses exemplos no Ubuntu 20.04, o compilador GCC deve ser instalado. Um pequeno pedaço do código C é gerado quando o GCC é instalado para demonstrar como usar a função "sem_getValue ()" na programação C C. Alguns arquivos de cabeçalho são usados ​​no início do código. Nós temos o “stdio. Arquivo de cabeçalho H ”o seguinte, qual é o arquivo de cabeçalho de entrada/saída padrão. Devemos adicionar este arquivo de cabeçalho quando estamos escrevendo o código C.

Depois disso, colocamos o “Semáforo. arquivo de cabeçalho H ”. Incluímos este arquivo de cabeçalho para que possamos usar a função "sem_getValue ()", conforme definido neste arquivo de cabeçalho. Então, colocamos a função "main ()" aqui. Usamos o tipo de dados "int" com esta função "main ()". Também temos o "sem_t" com o nome "my_sem". Aqui, "my_sem" é declarado e o "NUM" do tipo de dados "int" também é declarado. Abaixo disso, utilizamos a função "sem_init ()". Este "sem_init" contém três parâmetros. O primeiro parâmetro é o "& my_sem", que inicializa o semáforo. O segundo parâmetro indica como esse semáforo é usado ou compartilhado.

Aqui, colocamos "0" como o segundo parâmetro, o que significa que é o único thread que executa no processo existente que vai usar esse semáforo. O terceiro parâmetro descreve o valor preliminar do semáforo. Aqui, colocamos o valor inicial deste semáforo como "10". Depois disso, temos a função "sem_getValue ()", que obtém o valor preliminar do semáforo. Passamos os dois parâmetros como "& my_sem" e "& num". O número do semáforo é obtido dessa maneira. Agora, imprimimos esse número na tela do terminal digitando a instrução "printf". Os dados escritos aqui são renderizados na tela.

Temos dois comandos para obter a saída deste código. Devemos colocar o "-lpthread" e "-lrt" com a primeira instrução e pressionar Enter. Após uma compilação bem -sucedida, executamos o segundo comando e renderizamos a saída. Você pode ver nesta saída que exibe o valor inicial do semáforo.

Exemplo #2:

Temos dois arquivos de cabeçalho aqui, “stdio. H "e" Semáforo. H ”, que já discutimos em nosso código anterior. Temos o “int main ()”. Abaixo disso, há o "SEM T" chamado "my_sem" e "new_sem". Nesse caso, "my_sem" e "new_sem" são declarados e o "num" e o "valor" também são declarados como o tipo de dados "int". Também temos a função "sem_init ()" e passamos os três parâmetros.

Em seguida, utilizamos a função "sem_getValue ()" para obter o valor inicial que passamos como um terceiro parâmetro da função "sem_init" e imprimimos esse valor na tela com a ajuda da fucência "printf". Abaixo disso, utilizamos novamente a função "sem_init ()" da mesma maneira que utilizamos a função anterior. Em seguida, obtemos o valor inicial com a ajuda da função "sem_getValue ()" e a imprimimos.

Aqui, temos duas linhas diferentes na saída. Primeiro, obtemos o valor do primeiro semáforo e o exibimos e depois obtemos o valor inicial do segundo semáforo e o imprimimos na tela de saída.

Exemplo #3:

Atualizamos o código anterior um pouco aqui. O código é idêntico ao que desenvolvemos anteriormente. Colocamos os dois arquivos de cabeçalho - “stdio. H "e" Semáforo. H ” - que são essenciais para este código e utilizam a função“ int main () ”. Abaixo desta função principal, declaramos o semáforo e o valor que é o tipo de dados "int". Em seguida, inicializamos o semáforo usando o "sem_init" e passamos os parâmetros desta função. Em seguida, obtemos o valor inicial deste semáforo usando a função "sem_getValue ()". Em seguida, imprima da mesma maneira que descrevemos anteriormente.

Aqui, adicionamos uma nova função que é a função "sem_wait ()". Utilizamos esta função para bloquear o semáforo. Em seguida, utilizamos novamente esta função "sem_getValue ()". Você verá na saída como ele obtém o valor inicial após a função "sem_wait ()". Também imprimimos esse valor usando a função "printf ()".

Nesta captura de tela, você pode ver que o primeiro valor inicial do semáforo é "10", mas após a função "sem_wait ()", ele recebe o valor que é "9". Ele imprime o valor "9" após a função "sem_wait ()".

Conclusão

Fornecemos este guia para você explicar a função "sem_getValue ()" em detalhes. O objetivo, os códigos e os resultados da função "sem_getValue ()" foram abordados neste guia. Este guia já discutiu a função C “sem_getValue ()”. Discutimos que a função "sem_getValue ()" em C é usada para obter o valor do semáforo. Passamos pelos três exemplos diferentes. A saída de cada exemplo e o código -fonte C são necessários para utilizar a função "sem_getValue ()". Depois de ler cuidadosamente este guia e executar esses códigos por conta própria, temos certeza de que você entenderá esse conceito facilmente.