算法:读写者问题

锁解析 :

  • 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)
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 程序员面试宝典 一、C++ 基础 1. 位运算 返回x二进制数中的1的个数? 返回x,y的平均值? 返回绝对值?...
    小任同学an阅读 1,205评论 0 0
  • 当多个线程访问共享数据时,会出现并发读写问题(reader-writer problems)。有两种访问数据的线程...
    janiokq阅读 1,095评论 0 1
  • 从三月份找实习到现在,面了一些公司,挂了不少,但最终还是拿到小米、百度、阿里、京东、新浪、CVTE、乐视家的研发岗...
    时芥蓝阅读 42,384评论 11 349
  • JVM 说一下 jvm 的主要组成部分?及其作用? JVM包括类加载子系统、堆、方法区、栈、本地方法栈、程序计数器...
    文刀雨木同阅读 462评论 0 1
  • 今天感恩节哎,感谢一直在我身边的亲朋好友。感恩相遇!感恩不离不弃。 中午开了第一次的党会,身份的转变要...
    迷月闪星情阅读 10,619评论 0 11