2016-03-29 34 views
-2

我正在使用pthread库在Linux中的多线程服务器应用程序上工作。对于每个连接的客户端有两个线程,因为我从设备和一个线程进行两个连接有依赖于other.until满足一个特定的条件第一个线程循环不断在一个while循环。当条件满足第二个线程设置标志和第一个线程的基础上打破了while循环并执行所需的任务。如何有效地阻止线程,直到满足特定条件

在线程中不断运行While循环,直到满足特定条件为止。如果不是,请指定更好的方法。

+1

使用'mutex'和'condition'。 –

+0

*在线程中持续运行While循环,直到满足特定条件为止。*编号创建信号量。让第二个线程在该信号量中调用'sem_wait()'。然后当第一个线程满足条件时,让它调用'sem_post()'。 或者只是使用一个线程。 –

+0

您能否指定'特定'条件是什么?你想等待文件/套接字读取或写入?或者它是在另一个线程中设置的“标志”?你是否正在等待一个(简单)条件或者你的情况更复杂(如从一个文件中读取,写入套接字以及另一个线程中的标志)?如果您发布源文件(部分),它也会有所帮助。 –

回答

3

您已经在使用pthreads,请阅读: http://linux.die.net/man/3/pthread_cond_wait (或其他任何pthreads的同步机制)。

一般而言,while循环会不必要地浪费CPU周期。

+0

为了完整性,官方POSIX规范对'pthread_cond_wait()':http://pubs.opengroup.org/onlinepubs/9699919799/functions/pthread_cond_timedwait.html – alk

+0

还有一个海洋的场景,自旋锁(while循环)是更多比合适。 – SergeyA

+0

@SergeyA - 当然,但我甚至不能想到涉及“使用pthread库的Linux中的多线程服务器应用程序” – Ofir

相关问题