【发布时间】:2014-08-26 05:27:17
【问题描述】:
我一直在搜索和阅读有关杀死线程(C posix 线程)的信息,每个人都说这不是一个好主意,因为线程应该使其工作然后返回......但我的问题是下一个:
我正在本地网络中接收消息(使用 recvfrom 函数),但是这个函数“阻塞”了我的程序,我的意思是,如果我不修改任何消息,该函数会一直锁定(永远)直到它接收到某些东西.
为了避免这种情况,我想使用线程,所以,当我的主线程“计数”时,我的第二个线程是尝试接收消息。如果在确定的时间(即 1 秒),我的第二个线程仍在等待消息(被锁定在 recvfrom 函数中)我需要“杀死它”然后创建另一个线程重新开始(并尝试从另一个IP)。这意味着并不总是我的线程会完成它的工作,我不能永远等待......
到目前为止,我可以做到这一点(创建很多线程并从我感兴趣的 IP 接收消息),但我不知道如何杀死从未接收到任何东西的线程......
有人知道如何杀死线程吗?或者当我的主程序返回时它们被自动杀死?
谢谢你,真的很抱歉我的英语不好......
【问题讨论】:
-
更具体地说,选择()超时。这将有助于了解您的程序做了什么,特别是为什么您要依次尝试不同的 IP 而不是并行。
标签: multithreading kill