读者写者模型
读者写者模型是操作系统中的一种同步与互斥机制,与生产者消费者模型类似,但不同的是在生产者消费者模型中,多个读者间没有关系,而且消费者会让临界资源的个数减少,而读者不会改变临界资源的个数。
读者写者模型应该具备的条件
1.写者是排他性的,即有多个写者的情况下,只有一个写者占有仓库。
2.读者可以一起读,采取并行机制。
3.读者和写者是同步且互斥的,如果读者占有了仓库,则写者不能占有,若写者正在写,则读者不能访问仓库。
读者写者模型的策略
1.读者优先
读者先来读取数据,此时写者处于阻塞状态,当读者读取完数据后且没有了读者时写者才能访问仓库。
2.写者优先
写者先写入数据,此时读者处于阻塞状态,当写者写完数据后且没有写者时读者才能访问仓库。
3.公平情况
写者和读者访问仓库的优先级相等,谁先进入优先级队列谁先访问。
自旋锁与挂起等待锁
1.自旋锁
当线程申请资源失败时,它会一直在当前检测锁位置处轮寻锁的状态,来查看资源是否能被申请。不断检测的过程叫做自旋,如读写锁。
2.挂起等待锁
当线程申请资源失败时,操作系统将其挂起等待,如互斥锁和二元信号量。
读写锁
什么是读写锁?
读写锁是一种特殊的自旋锁