在C++中进行多线程处理,只检查信号量是否被锁定

emo*_*oco 3 c++ multithreading mutex semaphore visual-c++

我正在尝试使用c ++解决我在Windows上遇到的问题.

比方说,我有螺纹ABC和线程ž.ABC和Z都是通过套接字向应用程序发送数据.但是当Z传输数据时,我希望AB和C等待Z完成,然后恢复.

ABC可以同时向应用程序发送数据.

我正在尝试使用互斥锁来阻止ABC在Z运行时运行,但我发现即使Z没有运行,ABC也不会因为该互斥锁而同时运行.

所以我的问题最终是,C++中是否有一种方法可以让我检查互斥锁是否被锁定,如果它被锁定,等待互斥锁解锁,但是不要锁定互斥锁?

我从不希望A,B和C锁定互斥锁.只有Z应该锁定互斥锁.

任何帮助,将不胜感激.

Gre*_*ill 5

有一种称为"读写器锁定"的锁可以解决您的问题.它适用于一个对象,其中可以有多个并发读取器,但一次只能有一个写入器(并且写入器会锁定读取器).这听起来与您的应用程序非常相似,其中A,B和C被视为读者,Z被视为作者.