2016-03-29 35 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

相關問題