-1

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

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

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

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

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

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

4

2 回答 2

0

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

于 2014-08-25T21:27:17.987 回答
0

看起来它与我的一个问题有关如何在以下或类似情况下避免线程等待(如果真的有必要让线程等待)?

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

本质上,我产生了新线程并执行了一些 i/o 操作及其阻塞调用。

出于某种原因,它只是等待永远,我确实有超时,以便我可以中止线程“中止”方法。

于 2013-09-25T05:04:08.670 回答