Fair sección crítica (Linux)

En una aplicación de Linux multiproceso, uso un mutex para secciones críticas. Esto funciona muy bien, excepto por el tema de la equidad. Puede suceder que un hilo que abandona una sección crítica y vuelva a ingresar de inmediato no le da ninguna posibilidad a ningún otro hilo. Por ejempl

while(true)
{
    critsect.enter();
    ... do calculations ...
    ... maybe call a blocking operation so we sleep ...
    critsect.leave();
}

s muy probable que @m detenga cualquier otro hilo para ingresar a la misma sección crítica. Mutexe no es justo.

¿Existe alguna solución para hacer una sección crítica justa? Estaba pensando en agregar una cola para que las secciones críticas se ejecuten en el orden de su 'llegada'. Alternativamente, al menos un contador para hacer un pthread_yield () después del desbloqueo si otros hilos están esperando.

Existe una práctica recomendada para este tipo de requisito?

Respuestas a la pregunta(5)

Su respuesta a la pregunta