2012-03-28 83 views
1

我正在開發即時消息應用程序。pthread除了等待和信號

這是我需要幫助的情況: 我的代碼中的例程fgets()用戶輸入的消息。 現在我需要喚醒一個線程,它有一個例程發送消息到套接字等。我不知道如何做到這一點。

如果我使用互斥鎖:我不希望我的第一個線程等待。因此我不想使用這個。 同樣我不能使用cond_variable。

請告訴我如何得到它。

+2

不要以爲過。您的兩個線程將花費(a)等待用戶輸入和(b)通過網絡傳輸的時間量爲EONS,與您想象中的互斥/共變花費相比較。 – Duck 2012-03-28 22:53:18

+1

爲什麼你不能使用條件變量?條件變量被設計爲在某個事件發生時喚醒線程,所以它們可以在這裏很方便地使用。 – 2012-03-28 23:05:35

回答

0

鴨的關於不過度的觀點是一個很好的觀點。

另一種方法是使用管道。您的控制檯處理線程會向管道寫入消息,並且網絡線程會從管道中進行阻止讀取。

你可能最終得到的結果是網絡線程在控制檯管道和網絡套接字上執行select()。然後,它會醒來,做一些事情,或者有東西要發送,或者從網絡上接收。時髦!