代码形式:
void rgb_pub(void);
_processOak = std::thread(&OakBridge::rgb_pub, this);
执行错误:
terminate called without an active exception
Aborted (core dumped)
原因分析:
原因就是创建线程后,主线程立马退出。但是子线程还没执行完,子线程被销毁,此时就会出现上述错误。C++种提供了detach()函数,detach函数就是让子线程与主线程分离,主线程不再干预子线程的运行,缺点就是主线程无法获取子线程的执行结果,因为主线程此时已经退出。
解决:
std::thread(&OakBridge::rgb_pub, this).detach();
本文探讨了C++中创建线程后主线程立即退出导致子线程终止的问题。通过使用detach()函数将子线程与主线程分离,解决了子线程被销毁的问题。重点在于如何避免子线程运行异常并确保线程独立性。
1万+

被折叠的 条评论
为什么被折叠?



