Concurrency 读写并发

Concurrency 读写并发,concurrency,locking,Concurrency,Locking,我有一个对象A,其中包含一组需要同步的字段。我想强制执行以下属性: 1) 一次可以有多个线程读取对象的字段。 2) 如果至少有一个线程正在读取对象,则无法修改该对象。 3) 如果正在修改对象,则任何线程都无法读取该对象 换句话说,我想要一个锁,任何数量的读卡器都可以持有这个锁。但是,如果任何一个编写器持有该锁,那么其他任何东西都无法持有该锁 我该怎么做?我使用C++,但我希望有一种独立于语言的方式来做。 你所寻找的概念是一个。这里有C++实现,最明显的是其中之一。其思想是,您可以使用单个(逻辑的

我有一个对象A,其中包含一组需要同步的字段。我想强制执行以下属性:

1) 一次可以有多个线程读取对象的字段。 2) 如果至少有一个线程正在读取对象,则无法修改该对象。 3) 如果正在修改对象,则任何线程都无法读取该对象

换句话说,我想要一个锁,任何数量的读卡器都可以持有这个锁。但是,如果任何一个编写器持有该锁,那么其他任何东西都无法持有该锁


我该怎么做?我使用C++,但我希望有一种独立于语言的方式来做。

你所寻找的概念是一个。这里有C++实现,最明显的是其中之一。其思想是,您可以使用单个(逻辑的,通常在内部使用两个互斥体实现)互斥体进行读写,您可以升级该互斥体以要求唯一锁定(当您写入时),并且多个读卡器可以在从中读取时同时锁定