我正试图用c++解决我在windows上遇到的一个问题。
假设我有线程A B C和线程Z。A、B、C和Z都通过套接字向应用程序发送数据。但是当Z正在传输数据时,我希望A、B和C等待Z完成,然后继续。当Z运行时,我试图使用互斥锁来阻止A运行,但是我发现即使Z没有运行,也没有因为这个互斥体而并发运行。因此,我的问题是,在C++中是否有一种方法允许我检查互斥锁是否被锁定,如果它被锁定,则等待互斥锁,但不锁定互斥锁<
如果有人对C++、多线程代码有经验,能对互斥问题有所了解,我将不胜感激。它运行在Red hat Linux 5.4上。我们正在调试不是我写的遗留代码。假设每秒进行非常高的调用,响应时间为3-5毫秒。我不喜欢这个应用程序的一个地方是到处使用智能指针(当SPtr超出范围时就会调用互斥锁)。写这篇文章的人似乎对SPtrs上瘾了。许多函数都将SPtr作为参数。应用程序可以正常运行几个小时,然后我们在锁的时候突然得到互斥EINVAL (返回代码22)。我见过核心转储,它显示了不同