我一直在寻找和阅读有关杀死线程(C posix线程)的内容,并且每个人都说这不是一个好主意,因为线程应该使其工作然后返回...但我的问题是下一个:
我在我的本地网络中收到消息(使用recvfrom函数),但是这个函数“阻止”我的程序,我的意思是,如果我不修改任何消息,函数会一直锁定(永远),直到它重新获取某些东西
为了避免这种情况,我想使用线程,所以,当我的主线程是“计数”时,我的第二个线程是尝试重新接收消息。如果在确定的时间(即1秒)内,我的第二个线程仍在等待消息(在recvfrom函数中被锁定)我需要“杀死它”,然后创建另一个线程再次启动(并尝试从另一个IP)。这意味着我的线程并不总是完成它的工作,我不能永远等待......
到目前为止,我可以做到这一点(创建大量线程并从我感兴趣的IP中获取消息),但我不知道如何杀死从未收到任何东西的线程......
有人知道如何杀死线程?或者当我的主程序返回时它们会被自动杀死?
谢谢你,真的很抱歉我的英语很差......
答案 0 :(得分:0)
但它的.net虽然(代码示例在C#中)
基本上我生成了新的线程并执行了一些i / o操作和阻塞调用。
由于某种原因它只是等待,我确实有超时,所以我可以中止线程'中止'方法。
答案 1 :(得分:0)
重新架构,以便线程可以从任何 IP接收消息。这样,您可以尝试从另一个IP接收消息,而不必打扰线程。