首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >什么时候应该使用共享锁定(读锁定)

问什么时候应该使用共享锁定(读锁定)
EN

Stack Overflow用户
提问于 2012-08-31 16:24:50
回答 3查看 827关注 0票数 2

有人能解释一下什么时候应该使用共享锁吗?如果我理解正确的话,在读取时使用共享锁,在写入时使用排它锁。

但是为什么我不能在互斥锁被锁定的时候等待呢?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-08-31 16:50:24

这是为了提高性能。然后,多个并发读取将不必顺序发生,如果结构被频繁读取,这可能是一个很大的好处。(但读取的数据仍然是一致的和最新的。)

票数 2
EN

Stack Overflow用户

发布于 2012-08-31 16:50:28

,但是为什么我不能在互斥锁被锁定的时候等待。

因为在某些情况下,这将是低效的,特别是在许多线程经常读取数据结构,但很少写入并且不是非常频繁的情况下。由于多个并发读取是线程安全的,如果没有人在写,那么对读取器进行互斥将是一种浪费。

想象一下,一个服务器和多个客户端在一些共享数据上进行各种事务。如果这些客户端中的大多数只是请求信息,而不是更改任何内容,那么如果服务器一次只允许一个客户端读取,那么它的性能将非常糟糕。

票数 0
EN

Stack Overflow用户

发布于 2018-04-02 19:11:45

共享锁定(也称为读锁定)禁止任何其他进程请求文件的指定部分上的写锁定。但是,其他进程可以请求读锁定并保持对资源的读取。

排它锁(也称为写锁)为进程提供了写入文件指定部分的排它访问权限,并将阻止任何其他进程获取对该资源的任何类型的锁定,直到释放排它锁为止。

所以读锁表示“你现在可以读,但是如果你想写,你必须等待”,而写锁则说“你必须等待”。

有关官方描述,请查看official locks documentation of GNU C library。

此外,在许多情况下,共享/独占锁定的上下文是悲观/乐观锁定,这是一种用于处理对同一资源的多用户读/写的方法。这是一个explanation of the methodology。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12211516

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档