SEM_POST 3 C Función

SEM_POST 3 C Función
El método "sem_post ()" realiza una operación de desbloqueo de semáforo en el semáforo al que se hace referencia a SEM para desbloquearlo. No se detuvieron hilos mientras esperaba que el semáforo se desbloquee. En cambio, el valor semáforo simplemente aumenta si el valor semáforo obtenido de esta acción es positivo. La función "sem_post ()" aumenta (desbloquea) el semáforo que indicó SEM. El valor de un semáforo aumenta en uno cuando se realiza una publicación utilizando el método SEM_POST (). Usaremos esta función "sem_post ()" aquí en nuestra programación C y le mostraremos cómo la función "sem_post ()" aumentará el valor del semáforo por uno en esta guía.

Sintaxis:

La sintaxis de esta función "sem_post ()" en la programación C se da a continuación:

int sem_post (sem_t *sem);

Ejemplo 1:

Los ejemplos de esta guía son compatibles con Ubuntu 20.04. El compilador GCC debe instalarse para Ubuntu 20.04 para ejecutar estos ejemplos. Cuando se instala GCC, se creará una pequeña parte del código C para mostrar cómo utilizar la función "SEM_POST ()" en la programación C. Se utilizan algunos archivos de encabezado al comienzo del código. El archivo de encabezado de entrada/salida predeterminado es "STDIO. h "y está disponible de la siguiente manera. Al escribir el código C, debemos incluir este archivo de encabezado. El "semáforo. H ”Archivo de encabezado se agrega luego. Para usar la función "sem_post ()", que se define en este archivo de encabezado, la hemos incluido.

La función "main ()" se coloca aquí. Con esta función "main ()", se utiliza el tipo de datos "int". Además, está "SEM_T" con el nombre "my_sem". En este caso, "My SEM" se declara junto con el "número" del tipo de datos "int". Estamos utilizando el código "SEM init ()" a continuación. Hay tres argumentos en este "Sem_init."Aquí, el parámetro" & my_sem "inicializa el semáforo como el primer parámetro. La segunda opción especifica cómo compartir o usar este semáforo. El segundo argumento, en este caso, se establece en "0", lo que indica que este semáforo solo será utilizado por hilos que actualmente están operando.

El tercer parámetro describe el valor inicial del semáforo. Aquí, "20" se ingresa como el valor inicial del semáforo. Luego colocamos la función "sem_post ()" aquí y pasamos "& my_sem" como su parámetro. El método "SEM getValue ()" se utilizará para recuperar el valor inicial del semáforo. Aquí, se pasan los parámetros "& my SEM" y "& NUM". Esto devolverá el número del semáforo después de ejecutar la función "Sem_Post ()". Su valor inicial aumentará en uno.

Ahora, al ingresar la instrucción "printf" en esta ubicación, estamos imprimiendo este número después de la ejecución de la función "SEM_POST ()" en la pantalla Terminal. La información ingresada aparecerá en la pantalla.

Para obtener la salida de este código, tenemos dos instrucciones. El primer comando debe contener el "-lpThread" y "-lrt" antes de que podamos presionar Enter. Ejecutamos el segundo comando después de la compilación exitosa de este código C. Luego se muestra la salida. Puede ver en esta salida que muestra el valor del semáforo después de que la función "sem_post ()" se incrementa con una y muestra "21".

Ejemplo # 2:

Comenzamos nuestro próximo ejemplo colocando los archivos de encabezados "Stdio. H "y" Semafore. H ". Debemos agregar estos archivos de encabezado para este código. Ahora usamos la función "int main ()". Tenemos un semáforo llamado "new_sem" y declaramos el "número" como el tipo de datos "int". Colocamos la función "sem_init ()" y damos tres parámetros que son necesarios para esto. Ponemos el valor inicial de este semáforo como "20" y luego utilizamos la función "sem_post ()" que incrementará su valor inicial en uno.

Luego coloque la función "Sem_getValue ()" y pase dos parámetros de esta función y utilice el "printf" debajo de esto. Entonces, mostrará el valor incrementado en la pantalla. Nuevamente colocamos otra función "sem_post ()" y ponemos el mismo semáforo en esta segunda función "sem_post ()". Luego, utilice nuevamente el "Sem_GetValue ()" que ya discutimos en nuestro ejemplo anterior. "Printf" se utiliza para imprimir el valor después de esta segunda función "SEM_POST ()".

Puede ver que primero imprime el valor del semáforo como "21", ya que damos el valor inicial del semáforo como "20". Después de la función "sem_post ()", sus valores se incrementan en uno y muestran "21". En la segunda línea, el valor del semáforo es "22" porque nuevamente colocamos la función "SEM_POST ()".

Ejemplo # 3:

Actualizamos ligeramente el código mencionado anteriormente. El código es el mismo que el que establecimos anteriormente. Colocamos los dos archivos de encabezado "stdio. H "y" Semafore. h "que es necesario para este código. También utilizamos la función "int main ()" y declaramos el semáforo y el valor, un tipo de datos "int", debajo de esta función principal. Después de usar "SEM Init" para establecer el semáforo y pasar sus argumentos, utilizamos el método "SEM getValue ()" para recuperar el valor inicial del semáforo. Después de eso, imprímalo como ya hemos explicado. La función "sem_post ()" es nueva que estamos agregando aquí. Esta característica se utiliza para aumentar el valor del semáforo. El resultado mostrará cómo la función "sem_post ()" aumenta el valor inicial de este semáforo. Luego usamos la función "Sem_getValue" "una vez más y usando" printf () ", también imprimimos ese valor.

En esta salida, el valor inicial del semáforo se muestra primero y luego se muestra el valor después de la función "SEM_POST ()". Puede notar que incrementa el valor inicial del semáforo.

Conclusión

Estamos escribiendo esta guía para que aprenda más sobre la función "sem_post ()". Esta guía cubrió los códigos de la función "sem_post ()" y los resultados. La función C "sem_post ()" se cubrió en esta guía. Hemos discutido cómo la función "sem_post ()" aumenta el valor del semáforo en c. Hemos dado tres ejemplos separados aquí. Se ha proporcionado el código fuente C necesario para usar la función "sem_post ()", junto con la salida para cada ejemplo. Esperamos que comprenda esta noción claramente después de leer atentamente esta guía.