读者作家-谁越来越喜欢

代码是:

Semaphore rsem = 1;
Semaphore wsem = 1;
Semaphore mutex_rc = 1;
Semaphore mutex wc = 1;
Semaphore other_readers = 1;
int rc = 0;
int wc = 0;

void reader(void)
{
    while(true)
    {
        down(other_readers);
        down(rsem);
        down(mutex_rc);
        rc++;
        if(rc == 1)
            down(wsem);
        up(mutex_rc);
        up(rsem);
        up(other_readers);
        read_data_base();
        down(mutex_rc);
        rc--;
        if(rc == 0)
            up(wsem);
        up(mutex_rc);
    }
}



void writer()
{
    while(true)
    {
        down(mutex_wc);
        wc++;
        if(wc == 1)
            down(rsem);
        up(mutex_wc);
        down(wsem);
        write_data_base();
        up(wsem);
        down(mutex_wc);
        wc--;
        if(wc == 0)
            up(rsem);
        up(mutex_wc);
    }
}

我必须告诉谁得到了偏好。我了解信号量以及它们的用途,但我无法确定谁在这里得到了优先选择。 而other_readers信号量的原因是什么? 解决此类问题的方法是什么?

iCMS 回答:读者作家-谁越来越喜欢

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/1876949.html

大家都在问