如何知道线程是否存活然后杀死它?

时间:2013-09-25 04:19:46

标签: multithreading kill

我一直在寻找和阅读有关杀死线程(C posix线程)的内容,并且每个人都说这不是一个好主意,因为线程应该使其工作然后返回...但我的问题是下一个:

我在我的本地网络中收到消息(使用recvfrom函数),但是这个函数“阻止”我的程序,我的意思是,如果我不修改任何消息,函数会一直锁定(永远),直到它重新获取某些东西

为了避免这种情况,我想使用线程,所以,当我的主线程是“计数”时,我的第二个线程是尝试重新接收消息。如果在确定的时间(即1秒)内,我的第二个线程仍在等待消息(在recvfrom函数中被锁定)我需要“杀死它”,然后创建另一个线程再次启动(并尝试从另一个IP)。这意味着我的线程并不总是完成它的工作,我不能永远等待......

到目前为止,我可以做到这一点(创建大量线程并从我感兴趣的IP中获取消息),但我不知道如何杀死从未收到任何东西的线程......

有人知道如何杀死线程?或者当我的主程序返回时它们会被自动杀死?

谢谢你,真的很抱歉我的英语很差......

2 个答案:

答案 0 :(得分:0)

看起来它与我的一个问题How to avoid thread waiting in the following or similar scenarios (want to make a thread wait iff its really really necessary)?

有关

但它的.net虽然(代码示例在C#中)

基本上我生成了新的线程并执行了一些i / o操作和阻塞调用。

由于某种原因它只是等待,我确实有超时,所以我可以中止线程'中止'方法。

答案 1 :(得分:0)

重新架构,以便线程可以从任何 IP接收消息。这样,您可以尝试从另一个IP接收消息,而不必打扰线程。