读写之间的互斥

时间:2011-03-17 05:22:51

标签: c windows multithreading winapi mutex

我在关键部分使用互斥锁。我有一个设计约束, 1)如果2个读取发生在2个不同的线程中,那么两个临界区应该可用。 2)如果发生写入,则应阻止在其他线程上读取 3)如果发生读取,则应阻止在其他线程上写入。

我不知道用Createmutex,openmutex,waitforsingleobject和releasemutex apis做到这一点。

3 个答案:

答案 0 :(得分:4)

您要找的是Reader-Writer lock。互联网上有一些实现,例如this one

答案 1 :(得分:0)

请查看以下链接,了解此原生windows api是否符合您的要求:

Slim Reader/Writer (SRW) Locks

答案 2 :(得分:0)

如果您的同步/关键部分问题仅限于一个进程和多个线程,我建议您使用Critical Section Objects而不是Mutex Objects。从msdn链接的页面上有几个例子。阅读链接的msdn页面,如果你有基本的并发同步概念和所需的Windows Api知识,你应该立刻滚动,如果没有阅读。从api的角度来看,互斥锁和关键部分并没有什么特别之处。

相关问题