Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C+中的多线程+;,仅检查信号灯是否已锁定 我试图用C++来解决我在Windows上遇到的一个问题。_C++_Multithreading_Visual C++_Mutex_Semaphore - Fatal编程技术网

C+中的多线程+;,仅检查信号灯是否已锁定 我试图用C++来解决我在Windows上遇到的一个问题。

C+中的多线程+;,仅检查信号灯是否已锁定 我试图用C++来解决我在Windows上遇到的一个问题。,c++,multithreading,visual-c++,mutex,semaphore,C++,Multithreading,Visual C++,Mutex,Semaphore,假设我有threadabc和threadZ。 A、B、C和Z都通过套接字向应用程序发送数据。但当Z传输数据时,我希望A和B等待Z完成,然后继续 ABC可以同时向应用程序发送数据 我试图使用互斥来防止在Z运行时bc运行,但我发现即使Z不运行,由于互斥,bc也不会并发运行 我的问题最终是,C++中有没有一种方法可以让我检查互斥锁是否被锁定,如果它被锁定,等待互斥体解锁,但是 > < 我从不希望A、B和C锁定互斥锁。只有Z应该锁定互斥锁 任何帮助都将不胜感激。有一种称为a的锁,可以解决您的问题。它适

假设我有threadabc和threadZ。 A、B、C和Z都通过套接字向应用程序发送数据。但当Z传输数据时,我希望A和B等待Z完成,然后继续

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

我试图使用互斥来防止在Z运行时bc运行,但我发现即使Z不运行,由于互斥,bc也不会并发运行

我的问题最终是,C++中有没有一种方法可以让我检查互斥锁是否被锁定,如果它被锁定,等待互斥体解锁,但是<强> > < <强】锁定互斥锁?< /p> 我从不希望A、B和C锁定互斥锁。只有Z应该锁定互斥锁


任何帮助都将不胜感激。

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

看一看,这正是医生的医嘱。只要让线程A、B和C在工作时使用读锁,让线程Z在工作时使用写锁