Red de conocimiento informático - Aprendizaje de programación - ¿Cuál es el uso del semáforo mutex recursivo rtos gratuito?

¿Cuál es el uso del semáforo mutex recursivo rtos gratuito?

Importancia: la combinación de bloqueos recursivos y no recursivos puede provocar un punto muerto en el programa.

MutexLock?mutex

void?bar()

{

mutex.lock();

/?hacer?algo2

foo();

mutex.lock();

/?do?unlock();

}

El código anterior refleja un problema:

La función a\foo() se puede llamar sola o como una subfunción de la función bar();

b\hacer algo1 y hacer algo2 tienen áreas críticas que necesitan ser protegidas.

La sencilla situación anterior se puede evitar mediante habilidades de codificación. Para problemas como la clasificación recursiva de árboles binarios, si tiene buenas habilidades, parece que puede escribir una función recursiva en forma de bucle for. Pero para dos funciones que llaman de un lado a otro, debe usar señales mutex recursivas.

Referencia: Herramientas de sincronización de subprocesos (1): enlaces web de bloqueos recursivos y bloqueos no recursivos

Cabe señalar que el código anterior vale la pena para Linux. En FreeRTOS,

las señales mutex recursivas se usaban para proteger variables en funciones recursivas. El ejemplo de clasificación recursiva de árboles binarios todavía funciona.

Pero la señal mutex recursiva de FreeRTOS no permite la llamada cruzada anterior.