网上还没有一个例子来生动地展示这一点。在 http://en.cppreference.com/w/cpp/header/shared_mutex 看到了一个例子,但仍不清楚。有人可以帮忙吗?
原文由 Anand Kulkarni 发布,翻译遵循 CC BY-SA 4.0 许可协议
网上还没有一个例子来生动地展示这一点。在 http://en.cppreference.com/w/cpp/header/shared_mutex 看到了一个例子,但仍不清楚。有人可以帮忙吗?
原文由 Anand Kulkarni 发布,翻译遵循 CC BY-SA 4.0 许可协议
3 回答2k 阅读✓ 已解决
2 回答3.9k 阅读✓ 已解决
2 回答3.2k 阅读✓ 已解决
1 回答3.2k 阅读✓ 已解决
1 回答2.7k 阅读✓ 已解决
3 回答3.5k 阅读
3 回答468 阅读✓ 已解决
通过使用普通的互斥锁,您可以保证对某种关键资源的独占访问——除此之外别无其他。共享互斥体通过允许两个级别的访问来扩展此功能:共享和独占,如下所示:
一个典型的场景是数据库:多个线程同时读取一个相同的数据并不重要。但是数据库的修改是至关重要的——如果某个线程读取数据而另一个线程正在写入它可能会收到不一致的数据。因此,所有读取必须在允许写入之前完成,并且新的读取必须等到写入完成。写入后,可以再次同时进行进一步的读取。
编辑: 旁注:
这是为了防止写入器在读取时获取锁。此外,如果它还被独占持有,它会阻止新读者获取锁。