2013-09-25 158 views
-1

我一直在尋找和閱讀有關殺死線程(C posix線程),並且大家都說這不是一個好主意,因爲一個線程應該完成它的工作然後返回......但是我的問題是下一個:如何知道線程是否還活着然後殺死它?

我在我的本地網絡(使用recvfrom函數)中收回消息,但是此函數「阻止」我的程序,我的意思是,如果我沒有修復任何消息傳遞,那麼函數會一直鎖定(永遠),直到它收回爲止。

爲了避免這種情況,我想使用線程,所以,當我的主線程「計數」時,我的第二個線程嘗試收回消息。如果在一個確定的時間(即1秒),我的第二個線程仍在等待消息(被鎖定在recvfrom函數中),我需要「殺死它」,然後創建另一個線程再次啓動(並嘗試從另一個IP)。這意味着並不總是我的線程將完成其工作,我不能永遠等待...

到目前爲止,我可以做到這一點(創建大量的線程和recive從我感興趣的IP消息),但我不知道如何殺死從未收到任何東西的線程......

有人知道如何殺死線程?或者當我的主程序返回時它們會自動死亡?

謝謝你,我的英文不好真的很抱歉......

+0

搜索[非阻塞套接字](https://www.google.com/search?q=non+blocking+sockets)。 –

+0

更具體地說,選擇()超時。這將有助於瞭解你的程序是幹什麼的,特別是你爲什麼輪流嘗試不同的IP,而不是平行。 –

回答

0

Rearchitect因此線程可以從任何 IP接收消息。這樣,您可以嘗試從另一個IP接收消息,而不必打擾該線程。