rotección más rápida para múltiples lectores / escritores individuales para recursos compartidos - C ++

Me gustaría confirmar que mi enfoque es extremadamenterápid y apropiado para la protección multiplataforma de un recurso compartido para un enfoque en su mayoría de múltiples lectores y un solo escritor usando C ++. Favorece a los escritores de tal manera que cuando ingresan, todos los hilos actuales pueden terminar, pero todos los hilos nuevos de cualquier tipo deben esperar. El reverso de estas dos funciones debería ser obvio.

La lectura que he hecho sugiere que impulsar shared_mutex y otros tipos de rwlocks no se implementan muy bien y deben evitarse. De hecho, shared_mutex no entrará en C ++ 0x Lo tomo. Veresta respuesta por Anthony Williams.

Parece que incluso podría ser posible escribir en un número entero y no necesitar ningún tipo de bloqueo si está alineado correctamente. Hay tantos artículos por ahí, ¿alguna buena lectura sobre este tema para no tener que separar el trigo de la paja?

void AquireReadLock(void)
{
    mutex::enter();
    if(READ_STATE == true)
    {   
        iReaders++;
        mutex::leave();
        return;
    }
    else
    {
        mutex::leave();
        sleep(1);
        AquireReadLock();
        return;
    }   
}

void AquireWriteLock(void)
{
    mutex::enter();
    READ_STATE = false;
    if (iReaders != 0)
    {
        mutex::leave();
        sleep(1);
        AquireWriteLock();
        return;
    }
    else
    {
        mutex::leave();
        return;
    }   
}

Respuestas a la pregunta(2)

Su respuesta a la pregunta