具有共享资源的互斥锁/信号量模型

时间:2017-05-30 17:42:52

标签: multithreading language-agnostic mutex semaphore

我的数据结构有两个功能:readwrite

当其他read函数在其他线程上运行时,可以调用

read。但是,如果在任何线程上调用write,则之后调用的read函数将暂停。

可以调用

write个函数,但在所有其他readwrite函数结束之前,这些函数会暂停。

在了解了互斥量和信号量之后,我想我会有一个互斥量用于写作。

mutex writing;

每当调用write时,它都会等到writing互斥锁空闲。然后锁定它,以便任何后续的write调用必须等待。但问题出在这里,写作还需要等待所有读者完成。可以有无限的读者,所以使用信号量实际上并不正确,因为它不像只有n个锁。有无限的锁,write只能在每个锁返回时继续。

我如何构建这个以便不存在竞争条件?从数百个线程中调用了数百个编写器和读者。

0 个答案:

没有答案