美文网首页
算法:读写者问题

算法:读写者问题

作者: 风ai翔 | 来源:发表于2021-05-09 21:36 被阅读0次

    锁解析 :

    • RWMutex : 读-写互斥锁
    • WWMutex : 写-写互斥锁
    • WPriorityMutex = 1 : 写优先锁
    • WW-CMutex : 修改写者个数锁
    • RR-CMutex :修改读者个数锁
    int : writeCount=0, readCount=0
    
    void reader() {
        //读 抢锁
        P(WPriorityMutex)
        P(RWMutex)
        P(RR-CMutex)
            if (++readCount == 1) P(WWMutex)
        V(RR-CMutex)
        V(RWMutex)
        V(WPriorityMutex)
    
        //读操作。。。
    
        P(RR-CMutex)
            if (--readCount == 0) V(WWMutex)
        V(RR-CMutex)
    }
    
    void write() {
        P(WW-CMutex)
            if (++writeCount == 1) P(RWMutex)
        V(WW-CMutex)
    
        P(WWMutex)
    
        //写操作。。。
    
        V(WWMutex)
    
        P(WW-CMutex)
            if (--writeCount == 0) P(RWMutex)
        V(WW-CMutex)
    }
    

    相关文章

      网友评论

          本文标题:算法:读写者问题

          本文链接:https://www.haomeiwen.com/subject/rdvvdltx.html