gpt4 book ai didi

c++ - 杀死具有套接字的单独线程

转载 作者:行者123 更新时间:2023-11-27 23:33:53 26 4
gpt4 key购买 nike

我有一个单独的线程 ListenerThread,它有一个套接字,用于监听某个远程服务器广播的信息。这是在我需要开发的一个类的构造函数中创建的。

由于要求,一旦启动单独的线程,我需要避免主线程上的任何阻塞函数。一旦到了调用我的类的析构函数的地步,我就无法在监听器线程上执行连接,所以我唯一能做的就是杀死它。

我的问题是:

  1. 传递给 thead 的函数分配的网络资源发生了什么变化?套接字是否正确关闭或可能有未决的事情? (最担心这个)

  2. 这个过程是否足够快,即线程是否被杀死以便立即中断?

  3. 我正在使用 Linux ...可以使用什么命令或检查什么来确保没有未决的网络资源或操作系统出现问题

非常感谢你的帮助

问候MNSTN

注意:我在 C++ 中使用 boost::thread

最佳答案

  1. 网络资源属于进程,不属于线程,所以socket还是打开的。

  2. boost::thread 没有kill 方法。你只能打断它。效果不是立即并取决于操作系统调度程序。

  3. 用于查看什么网络资源一个过程持有结帐 lsofnetstat(8)使用 -p 选项。

您所描述的阻塞套接字的停止信号问题通常可以通过 self-pipe trick 解决。 .

关于c++ - 杀死具有套接字的单独线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2630225/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com