加载中...

| 中文名 | 读者写者问题 |
| 类别 | 进程同步问题 |
| 核心规则 | 读读共享、写写互斥 |
| 对应机制 | 读写锁 |
| 策略 | 读者优先、写者优先、公平 |
读者写者问题(Readers-Writers Problem)是操作系统中的经典进程同步问题,研究当多个读进程和写进程并发访问同一份共享数据时,如何在保证数据一致性的前提下尽可能提高并发度。
共享数据的访问分为两类:读操作只查看不修改,多个读者同时读并不会破坏数据;写操作会修改数据,必须独占访问,否则会导致数据不一致或读者读到中间状态。问题的核心是设计一套同步规则,允许多个读者并发读取,同时确保写者写入时没有任何其他读者或写者访问该数据。
读者写者问题的解决方案直接对应现实中的读写锁(读写自旋锁、读写互斥量)。数据库系统、缓存、配置管理、内核数据结构等大量场景都是读多写少,采用读写分离的锁能显著提升并发性能。Linux内核的rwlock、seqlock以及各语言标准库中的读写锁,思想都源自这一模型。
问:读者优先会有什么问题?答:读者优先方案下,只要不断有新读者到来,写者可能长期得不到机会,产生写者饥饿,因此在写操作重要的场景常改用写者优先或公平策略。
问:读写锁一定比普通互斥锁快吗?答:在读远多于写的场景优势明显;但如果写操作频繁,读写锁维护读者计数的额外开销可能得不偿失,此时普通互斥锁反而更简单高效。

| 中文名 | 读者写者问题 |
| 类别 | 进程同步问题 |
| 核心规则 | 读读共享、写写互斥 |
| 对应机制 | 读写锁 |
| 策略 | 读者优先、写者优先、公平 |
登录 后参与讨论
暂无讨论,来发表第一条评论吧