Sem_post 3 c função

Sem_post 3 c função
O método "sem_post ()" executa uma operação de desbloqueio de semáforo no semáforo que é referenciado por SEM para desbloqueá -lo. Nenhum tópico foi sustentado enquanto esperava o semáforo para desbloquear. Em vez. A função "sem_post ()" aumenta (desbloqueia) o semáforo que o SEM indicou. O valor de um semáforo é aumentado por um quando uma postagem é feita usando o método sem_post (). Usaremos esta função "sem_post ()" aqui em nossa programação C e mostraremos como a função "sem_post ()" aumentará o valor do semáforo por um neste guia.

Sintaxe:

A sintaxe desta função "sem_post ()" na programação C é dada abaixo:

int sem_post (sem_t *SEM);

Exemplo 1:

Os exemplos deste guia são compatíveis com o Ubuntu 20.04. O compilador GCC precisa ser instalado para o Ubuntu 20.04 Para executar esses exemplos. Quando o GCC é instalado, uma pequena parte do código C será criada para mostrar como utilizar a função "sem_post ()" na programação C C. Alguns arquivos de cabeçalho são usados ​​no início do código. O arquivo de cabeçalho de entrada/saída padrão é “stdio. H ”e está disponível da seguinte maneira. Ao escrever o código C, devemos incluir este arquivo de cabeçalho. O “Semáforo. H ”o arquivo de cabeçalho é então adicionado. Para usar a função "sem_post ()", que é definida neste arquivo de cabeçalho, incluímos.

A função "main ()" é então colocada aqui. Com esta função "main ()", o tipo de dados "int" é utilizado. Além disso, há "sem_t" com o nome "my_sem". Nesse caso, "meu SEM" é declarado junto com o "NUM" do tipo de dados "int". Estamos usando o código "SEM init ()" abaixo. Existem três argumentos neste “sem_init.”Aqui, o parâmetro“ & my_sem ”inicializa o semáforo como o primeiro parâmetro. A segunda opção especifica como compartilhar ou usar este semáforo. O segundo argumento, neste caso, está definido como "0", que indica que esse semáforo será usado apenas por threads que estão operando atualmente.

O valor inicial do semáforo é descrito pelo terceiro parâmetro. Aqui, "20" é inserido como o valor inicial do semáforo. Em seguida, colocamos a função "sem_post ()" aqui e passamos "& my_sem" como seu parâmetro. O método "SEM getValue ()" será usado para recuperar o valor inicial do semáforo. Aqui, os parâmetros “& my SEM” e “& num” são passados. Isso retornará o número do semáforo depois de executar a função "sem_post ()". Seu valor inicial será aumentado por um.

Agora, ao inserir a instrução "printf" neste local, estamos imprimindo esse número após a execução da função "sem_post ()" na tela do terminal. As informações inseridas aparecerão na tela.

Para obter a saída deste código, temos duas instruções. O primeiro comando deve conter o "-lpthread" e "-lrt" antes de podermos pressionar Enter. Executamos o segundo comando após a compilação bem -sucedida deste código C. A saída é então exibida. Você pode ver nesta saída que mostra o valor do semáforo após a função "sem_post ()" é incrementada por um e exibe "21".

Exemplo # 2:

Começamos nosso próximo exemplo colocando os arquivos dos cabeçalhos “Stdio. H "e" Semáforo. h ". Devemos adicionar esses arquivos de cabeçalho para este código. Agora, usamos a função "int main ()". Temos um semáforo chamado "new_sem" e declaramos o "número" como o tipo de dados "int". Colocamos a função "sem_init ()" e fornecemos três parâmetros necessários para isso. Colocamos o valor inicial deste semáforo como "20" e depois utilizamos a função "sem_post ()", que aumentará seu valor inicial por um.

Em seguida, coloque a função "sem_getValue ()" e passe dois parâmetros desta função e utilize o "printf" abaixo disso. Portanto, ele exibirá o valor incrementado na tela. Novamente colocamos outra função "sem_post ()" e colocamos o mesmo semáforo nesta segunda função "sem_post ()". Em seguida, utilize novamente o "sem_getValue ()", que já discutimos em nosso exemplo anterior. "Printf" é utilizado para imprimir o valor após esta segunda função "sem_post ()".

Você pode ver que, primeiro, ele imprime o valor do semáforo como "21", pois damos o valor inicial do semáforo como "20". Após a função "sem_post ()", seus valores aumentam em um e exibem "21". Na segunda linha, o valor do semáforo é "22" porque colocamos novamente a função "sem_post ()".

Exemplo # 3:

Atualizamos um pouco o código mencionado anteriormente. O código é o mesmo que o que estabelecemos anteriormente. Colocamos os dois arquivos de cabeçalho “stdio. H "e" Semáforo. h ”isso é necessário para este código. Também utilizamos a função "int main ()" e declaramos o semáforo e o valor, um tipo de dados "int", embaixo desta função principal. Depois de usar o "SEM init" para estabelecer o semáforo e passar seus argumentos, usamos o método "SEM getValue ()" para recuperar o valor inicial do semáforo. Depois disso, imprima -o como já explicamos. A função "sem_post ()" é uma nova que estamos adicionando aqui. Este recurso é usado para aumentar o valor do semáforo. O resultado mostrará como a função "sem_post ()" aumenta o valor inicial deste semáforo. Em seguida, usamos a função "sem_getValue ()" mais uma vez e usando "printf ()", também imprimimos esse valor.

Nesta saída, o valor inicial do semáforo é exibido primeiro e depois o valor após a função "sem_post ()" é exibida. Você pode notar que isso incrementa o valor inicial do semáforo.

Conclusão

Estamos escrevendo este guia para você aprender mais sobre a função "sem_post ()". Este guia cobriu os códigos da função "sem_post ()" e os resultados. A função C “sem_post ()” foi abordada neste guia. Discutimos como a função "sem_post ()" aumenta o valor do semáforo em c. Demos três exemplos separados aqui. O código -fonte C necessário para usar a função "sem_post ()" foi fornecido, juntamente com a saída para cada exemplo. Esperamos que você entenda essa noção claramente depois de ler atentamente este guia.