@pcunite отредактируйте свой вопрос с этой информацией

ел бы подтвердить, что мой подход чрезвычайнобыстрый и подходит для кроссплатформенной защиты общего ресурса для подхода с несколькими читателями и одним писателем с использованием C ++. Авторы предпочитают, чтобы при их входе все текущие потоки могли завершаться, но все новые потоки любого типа должны ждать. Обратное из этих двух функций должно быть очевидным.

Чтение, которое я сделал, предполагает, что повышениеshared_mutex и другие типы блокировок не очень хорошо реализованы и их следует избегать. На самом деле, shared_mutex не превратится вC ++ 0x Я беру это. Видетьэтот ответ Энтони Уильямс.

Кажется, что можно даже написать целое число и не нуждаться ни в каком блокировании, если оно выровнено правильно. Есть так много статей, есть хорошее чтение на эту тему, так что мне не нужно сортировать пшеницу из соломы?

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;
    }   
}

Ответы на вопрос(2)

Ваш ответ на вопрос