网上还没有一个例子来生动地演示这一点。看到一个例子http://en.cppreference.com/w/cpp/header/shared_mutex http://en.cppreference.com/w/cpp/header/shared_mutex但
目前还不清楚。有人可以帮忙吗?
通过使用普通的互斥体,您可以保证对某种关键资源的独占访问——仅此而已。共享互斥体通过允许两个级别的访问来扩展此功能:共享和独占,如下所示:
- 独占访问可防止任何其他线程获取互斥体,就像普通互斥体一样。另一个线程尝试获取共享或独占访问权限并不重要。
- 共享访问允许多个线程获取互斥体,但是all其中仅在共享模式下。在所有先前的共享持有者都返回互斥体之前,不会授予独占访问权限(通常,只要独占请求正在等待,新的共享访问就会排队等待被授予)after独占访问权)。
一个典型的场景是数据库:多个线程同时读取同一个数据并不重要。但数据库的修改至关重要 - 如果某个线程读取数据,而另一个线程正在写入,则可能会收到不一致的数据。因此,在允许写入之前,所有读取必须完成,并且新的读取必须等到写入完成。写入后,可以再次同时进行进一步的读取。
Edit:边注:
为什么读者需要锁?
这是为了防止写入者在读取时获取锁。此外,如果锁仍以独占方式持有,它会阻止新的读者获取该锁。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)