La función SEM_GETVALUE () obtiene el valor del semáforo. Obtiene el valor, o es un semáforo llamado o un semáforo sin nombre. En el caso del valor cero del semáforo, devuelve un valor negativo. Cuando algunos hilos esperan en el semáforo, devuelve un valor negativo. El valor absoluto de ese tipo de entero negativo representa el número de hilos que esperan en el semáforo. La función "Sem_GetValue ()" se define en el "Semafore. H ”Archivo de encabezado. Realizaremos esta función "Sem_getValue ()" en esta guía y demostraremos los ejemplos en los que utilizamos esta función "SEM_GETVALUE" para proporcionarle una buena comprensión de este concepto.
Sintaxis:
# int sem_getValue (sem_t * sem, int * valor);Ejemplo 1:
Los ejemplos de esta guía funcionarán con Ubuntu 20.04. Para ejecutar estos ejemplos en Ubuntu 20.04, se debe instalar el compilador GCC. Se genera un pequeño bit del código C cuando se instala GCC para demostrar cómo usar la función "Sem_getValue ()" en la programación C. Se utilizan algunos archivos de encabezado al comienzo del código. Tenemos el "stdio. H ”Archivo de encabezado de la siguiente manera, que es el archivo de encabezado de entrada/salida predeterminado. Debemos agregar este archivo de encabezado cuando escribamos el código C.
Después de esto, pusimos el "semáforo. H ”Archivo de encabezado. Incluimos este archivo de encabezado para que podamos usar la función "Sem_getValue ()", ya que se define en este archivo de encabezado. Luego, colocamos la función "main ()" aquí. Utilizamos el tipo de datos "int" con esta función "main ()". También tenemos el "SEM_T" con el nombre "my_sem". Aquí, se declara "my_sem" y también se declara el "número" del tipo de datos "int". Debajo de esto, utilizamos la función "sem_init ()". Este "sem_init" contiene tres parámetros. El primer parámetro es el "& my_sem" que inicializa el semáforo. El segundo parámetro indica cómo se usa o compartir este semáforo.
Aquí, ponemos "0" como el segundo parámetro, lo que significa que es el único hilo que se ejecuta en el proceso existente que usará este semáforo. El tercer parámetro describe el valor preliminar del semáforo. Aquí, ponemos el valor inicial de este semáforo como "10". Después de esto, tenemos la función "Sem_GetValue ()" que obtiene el valor preliminar del semáforo. Pasamos los dos parámetros como "& my_sem" y "& num". El número del semáforo se obtiene de esta manera. Ahora, imprimimos este número en la pantalla Terminal escribiendo la instrucción "printf". Los datos escritos aquí se representan en la pantalla.
Tenemos dos comandos para obtener la salida de este código. Debemos poner el "-lpThread" y "-lrt" con la primera instrucción y presionar Entrar. Después de una compilación exitosa, ejecutamos el segundo comando y representamos la salida. Puede ver en esta salida que muestra el valor inicial del semáforo.
Ejemplo #2:
Tenemos dos archivos de encabezado aquí, "Stdio. H "y" Semafore. h ", que ya hemos discutido en nuestro código anterior. Tenemos el "int main ()". Debajo de esto, está el "sem t" llamado "my_sem" y "new_sem". En este caso, se declaran "my_sem" y "new_sem" y el "num" y el "valor" también se declaran como el tipo de datos "int". También tenemos la función "sem_init ()" y pasamos los tres parámetros.
Luego, utilizamos la función "Sem_getValue" "para obtener el valor inicial que pasamos como un tercer parámetro de la función" SEM_INIT "e imprime este valor en la pantalla con la ayuda de la fucntion" Printf ". Debajo de esto, utilizamos nuevamente la función "Sem_init ()" de la misma manera que utilizamos la función anterior. Luego, obtenemos el valor inicial con la ayuda de la función "Sem_getValue ()" e imprima la imprimir.
Aquí, tenemos dos líneas diferentes en la salida. Primero, obtenemos el valor del primer semáforo y lo mostramos y luego obtenemos el valor inicial del segundo semáforo e lo imprimimos en la pantalla de salida.
Ejemplo #3:
Actualizamos un poco el código anterior aquí. El código es idéntico al que desarrollamos anteriormente. Colocamos los dos archivos de encabezado: "Stdio. H "y" Semafore. H " - que son esenciales para este código y utilizan la función" int main () ". Debajo de esta función principal, declaramos el semáforo y el valor que es el tipo de datos "int". Luego, inicializamos el semáforo usando el "SEM_INIT" y pasamos los parámetros de esta función. Luego, obtenemos el valor inicial de este semáforo utilizando la función "SEM_GETVALUE ()". Luego imprímalo de la misma manera que describimos anteriormente.
Aquí, agregamos una nueva función que es la función "SEM_WAIT ()". Utilizamos esta función para bloquear el semáforo. Luego, nuevamente utilizamos esta función "SEM_GETVALUE ()". Verá en la salida cómo obtiene el valor inicial después de la función "SEM_WAIT ()". También imprimemos ese valor usando la función "printf ()".
En esta captura de pantalla, puede ver que el primer valor inicial del semáforo es "10", pero después de la función "SEM_WAIT ()", obtiene el valor que es "9". Imprime el valor "9" después de la función "SEM_WAIT ()".
Conclusión
Le proporcionamos esta guía que explique la función "Sem_getValue ()" en detalle. El propósito, los códigos y los resultados de la función "Sem_getValue ()" se abordaron en esta guía. Esta guía ya discutió la función C "Sem_GetValue ()". Discutimos que la función "Sem_getValue ()" en C se usa para obtener el valor del semáforo. Hemos pasado por los tres ejemplos diferentes. Se requieren la salida de cada ejemplo y el código fuente C para utilizar la función "Sem_getValue ()" se proporcionan. Después de leer cuidadosamente esta guía y ejecutar esos códigos por su cuenta, estamos seguros de que comprenderá este concepto fácilmente.