Red de conocimientos sobre prescripción popular - Conocimiento de perdida de peso - ¿Qué significa el valor del semáforo de sincronización?

¿Qué significa el valor del semáforo de sincronización?

El valor del semáforo de sincronización es el siguiente:

1. La estructura de datos del semáforo es un valor y un puntero, y el puntero apunta al siguiente proceso que espera el semáforo. El valor del semáforo está relacionado con el uso del recurso correspondiente.

Cuando su valor es mayor que 0, indica el número de recursos disponibles actualmente; cuando su valor es menor que 0, su valor absoluto indica el número de procesos esperando para utilizar el recurso. Tenga en cuenta que el valor de un semáforo solo se puede cambiar mediante operaciones PV.

2. En términos generales, el semáforo S>=0, s representa el número de recursos disponibles. Realizar la operación p significa solicitar la asignación de recursos unitarios, por lo que el valor de s se reduce en uno.

Cuando S lt0, significa que no hay recursos disponibles y el solicitante debe esperar a que otros procesos liberen estos recursos antes de poder ejecutarse. Realizar la operación V significa liberar una unidad de recurso, por lo que el valor de S aumenta a 1 si S lt0, significa que algunos procesos están esperando recursos, así que active un proceso en espera y déjelo ejecutar.

El semáforo es el sincronizador integrado del JDK en Art of War de Sun Tzu de subprocesos múltiples de Java. A través del semáforo, los subprocesos múltiples pueden lograr control de acceso concurrente a recursos públicos.

Cuando un hilo ingresa a un recurso público, primero necesita obtener una licencia. Si no puede obtener el permiso, debe esperar a que otros subprocesos lo liberen. Cada hilo libera la licencia cuando abandona un recurso común.

El principal escenario de aplicación de los semáforos es controlar hasta n subprocesos para acceder a recursos al mismo tiempo, donde el valor máximo del contador es el valor máximo permitido n.

Tomemos como ejemplo un aparcamiento. Supongamos que el estacionamiento 1** tiene 8 espacios de estacionamiento, 6 de los cuales ya están estacionados, y luego vienen dos autos. Ambos coches pueden aparcar en este momento, porque quedan exactamente dos plazas de aparcamiento. Luego vino otro auto y ya no quedaba espacio, así que tuve que esperar a que salieran otros autos.