Red de conocimiento informático - Aprendizaje de programación - La diferencia entre el contador mutex (mutex) y el registro (semáforo) en Linux

La diferencia entre el contador mutex (mutex) y el registro (semáforo) en Linux

El recuento de exclusión mutua tiene tres valores posibles. "1" significa desbloqueado, "0" significa bloqueado y los valores negativos representan posibles camareros.

Mutex tiene la siguiente convención:

Sólo lo mantiene un proceso.

Solo el propietario puede desbloquear el mutex (la función del puntero del propietario).

No se permite el bloqueo recursivo. Pero el semáforo está permitido. MySQL solía tener un error en este sentido: Error #24745 Tiempo de espera/caída del semáforo de InnoDB: esperando su propio punto muerto

Solo se puede inicializar a través de API, no a través de meme.

Un proceso generalmente no sale mientras mantiene un mutex; la memoria que contiene el mutex no se puede liberar.

Normalmente no se utiliza para interrupciones de hardware y software.

V. Resumen

Como se puede ver en la definición anterior, el semáforo generalmente es solo una cuestión de cuántos recursos y cuánta información hay disponible, y se utiliza para resolver problemas similares. al envío de señales productor-consumidor y de sincronización y otras cuestiones. No resuelve el problema de serialización.

Mutex se utiliza para resolver el problema de exclusión mutua y garantizar el acceso en serie a recursos o fragmentos de código porque solo el propietario puede liberar el bloqueo; Además, algunos estudiantes pueden preguntar que el semáforo binario tiene solo dos valores posibles y también puede lograr un acceso mutuamente excluyente. Pero tenga en cuenta que un

semáforo binario todavía no tiene un puntero de propietario. Pero una similitud es que en un sistema ISR (Rutina de servicio de interrupción), la rutina de interrupción interrumpirá el semáforo o mutex.