水木社区手机版
首页
|版面-C++程序设计语言(CPlusPlus)|
新版wap站已上线
返回
1/1
|
转到
主题:新手问两个线程问题
楼主
|
rogerr
|
2021-06-11 19:16:18
|
展开
foo(){//blabla}
thread_function(){
//blabla
std::thread t1(foo);
t1.detach();
}
main()
{
thread_function();
//blabla
}
以上代码,线程t1为非阻塞方式运行,两个问题:
1 如果thread_function()执行完,线程里的foo()还未执行完,此时t1任然有效吗?会不会影响foo()的执行?
2 上述写法,线程t1会被自动销毁吗?反复调用thread_function()会有资源泄露隐患吗?
多谢!
--
修改:rogerr FROM 120.244.180.*
FROM 120.244.180.*
2楼
|
rogerr
|
2021-06-12 23:09:51
|
展开
多谢回答,这是说程序exit得时候线程会terminate?那么程序运行中detach的话这个线程是什么状态? 反复创建线程然后detach会有问题吗?
【 在 libgcc (乞讨积分,求施舍,长期有效) 的大作中提到: 】
:
https://man7.org/linux/man-pages/man3/pthread_detach.3.html
:
:
: The detached attribute merely determines the behavior of the
--
FROM 61.149.236.*
5楼
|
rogerr
|
2021-06-12 23:46:19
|
展开
多谢楼上两位,受益匪浅
【 在 z16166 (Netguy) 的大作中提到: 】
: detach了就是无法join子线程了,一般只在不需要wait那个子线程退出时才这么干。
: 被detach的子线程自己退出时还是会释放对应的资源的。
: 可以单步执行进detach()看看它到底干了些什么。
:
--
FROM 61.149.236.*
1/1
|
转到
选择讨论区
首页
|
分区
|
热推
BYR-Team
©
2010.
KBS Dev-Team
©
2011
登录完整版