Cómo evitar que los subprocesos se mueran de hambre en C ++ 11

Me pregunto si hay alguna política de bloqueo en C ++ 11 que impida que los subprocesos se desvanezcan.

Tengo un montón de hilos que compiten por un mutex. Ahora, mi problema es que el hilo que está saliendo de una sección crítica comienza a competir inmediatamente por el mismo mutex y la mayoría de las veces gana. Por lo tanto, otros hilos que esperan en el mutex están muriendo de hambre.

No quiero dejar que el hilo, dejando una sección crítica, se duerma durante un tiempo mínimo para que otros hilos tengan la oportunidad de bloquear el mutex.

Pensé que debía haber algún parámetro que permitiera un bloqueo justo para los hilos que esperaban en el mutex, pero no pude encontrar ninguna solución adecuada.

Bueno, encontré la función std :: this_thread :: yield (), que supone reprogramar el orden de ejecución de los subprocesos, pero es solo una sugerencia para el subproceso del planificador y depende de la implementación del subproceso del planificador si reprograma los subprocesos o no.

¿Hay alguna manera de proporcionar una política de bloqueo justa para los hilos que esperan en el mismo mutex en C ++ 11? ¿Cuáles son las estrategias habituales?

Gracias

Respuestas a la pregunta(1)

Su respuesta a la pregunta