Red de conocimiento informático - Conocimiento informático - Si el valor actual del semáforo es -4, ¿significa que el semáforo en el sistema tiene un proceso de espera? Gracias.

Si el valor actual del semáforo es -4, ¿significa que el semáforo en el sistema tiene un proceso de espera? Gracias.

Esto significa que hay 4 procesos en espera.

Si el valor actual del semáforo es N positivo, significa que hay N recursos disponibles.

Si es 0, significa que se han asignado todos los recursos y no hay procesos en espera.

Si es N negativo, significa que se han asignado todos los recursos y N procesos están esperando recursos.

Por ejemplo, si el valor inicial del semáforo S es 3 y el valor actual es -2, significa que hay (2) procesos en espera. Cuando el valor de un semáforo es menor que 0, su valor absoluto representa la cantidad de procesos en el sistema que se bloquean al solicitar dichos recursos.

Información ampliada:

El parámetro nsems es un valor mayor o igual a 0 que especifica el número de recursos disponibles en el conjunto de señales de este semáforo (cuando se crea el semáforo). semop se utiliza para operar un conjunto de señales. El prototipo de función es el siguiente:

#include lt; sys/sem.hgt.

int semop( int semid, struct sembuf semoparray. [], size_t nops );

El parámetro semid es el identificador de un semáforo devuelto por la función semget, y el parámetro nops indica el número de elementos en la matriz señalada por semoparray. El parámetro nops se utiliza para identificar la cantidad de elementos en la matriz a la que apunta semoparray.

Enciclopedia Baidu - Semáforo