Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/57.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.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_Linux_Multithreading - Fatal编程技术网

C 如何在满足特定条件之前有效地阻止线程

C 如何在满足特定条件之前有效地阻止线程,c,linux,multithreading,C,Linux,Multithreading,我正在Linux中使用pthread库处理一个多线程服务器应用程序。对于连接的每个客户端,在我从设备建立两个连接时都有两个线程,一个线程依赖于另一个线程。在满足特定条件之前,第一个线程在while循环中连续循环。当满足该条件时,第二个线程将设置为该标志和基于该标志的第一个线程将中断while循环并执行所需的任务 正在线程中连续运行While循环,直到满足特定条件为止。如果没有,请指定更好的方法。您已经在使用pthreads,请阅读: (或者任何其他pthread的同步机制) 通常,while循环

我正在Linux中使用pthread库处理一个多线程服务器应用程序。对于连接的每个客户端,在我从设备建立两个连接时都有两个线程,一个线程依赖于另一个线程。在满足特定条件之前,第一个线程在while循环中连续循环。当满足该条件时,第二个线程将设置为该标志和基于该标志的第一个线程将中断while循环并执行所需的任务


正在线程中连续运行While循环,直到满足特定条件为止。如果没有,请指定更好的方法。

您已经在使用pthreads,请阅读: (或者任何其他pthread的同步机制)


通常,while循环会不必要地浪费CPU周期。

Use
mutex
condition
在线程中连续运行while循环,直到满足特定条件为止,这是一种很好的方法。不,创建一个信号灯。在该信号量中设置第二个线程调用
sem\u wait()
。然后,当第一个线程满足条件时,让它调用
sem\u post()
。或者只使用一个线程。请指定“特定”条件是什么?是否要等待读取或写入文件/套接字?或者它是在另一个线程中设置的“标志”?您是只等待一个(简单的)条件,还是等待更复杂的条件(如从一个文件读取、写入套接字以及从另一个线程添加标志)?如果您发布(部分)源代码,它也会有所帮助。@AndreasFlorath它是一个根据从套接字读取的数据在另一个线程中设置的标志。为了完整性,官方POSIX规范将
pthread\u cond\u wait()
:仍然存在大量的自旋锁(while loop)非常合适的场景。@SergeyA-当然,但我甚至想不出一个涉及“Linux中使用pthread库的多线程服务器应用程序”