c++在另一个线程中观察main()的结束
C++ observing the end of main() in another thread
我希望能够在c++中捕获主函数的结束,并在进程终止之前在另一个线程中执行额外的操作。
我一直在尝试获得主线程的句柄,然后加入它,但似乎std::this_thread/boost::this_thread不允许您访问当前线程的句柄
我想做的基本上是:
void thread_function(thread_handler) {
thread_handler.join();
< Perform extra operations before the program finishes its main function >
}
int main() {
< thread_function thread started in LD_PRELOAD>
.... Program runs .....
return 0;
}
在我的场景中,这两个函数没有共享状态,因为thread_function线程是在使用LD_PRELOAD的共享库中调用的,但是我可以从随后调用main()的线程中传递给它任何东西。这很可能是不可能捕捉到main函数的结束,但我想我应该问一下,以防有人知道这一点。
听起来您需要一个信号量,毕竟,您需要防止程序关闭,直到所有线程在程序退出时完成它们需要做的事情。
所以你需要主线程发出它停止的信号,然后等待其他线程(如果有多个线程)完成并报告它们已经完成。最简单的方法是设置一个事件来通知其他线程,然后等待,直到每个线程都发出了一个信号量,该信号量设置为将要等待的线程的数量。
相关文章:
- 为什么随机数生成器不在void函数中随机化数字,而在main函数中随机化
- 代码在main()中运行,但在函数中出现错误
- 为什么在这个代码结束循环中没有得到结束
- 当我在main中声明了我的2d数组时,为什么我的程序会退出
- 试图对缓存进行跨步测试,但程序并没有结束
- QML:修改在不同QML文件(而非main.QML)中定义的子对象的属性
- 不确定要在我的main中放入什么才能使我的代码正常工作
- 当调用switch语句中的函数时(即使函数不包含循环),似乎是永不结束的循环的问题
- 函数是否可以访问传递给main()的参数
- 在main()之外初始化std::vector会导致性能下降(多线程)
- 为什么擦除方法会影响结束方法
- 根据用户输入用字母填充矢量,并将"开始"和"结束"放在四肢
- 删除映射和分割错误中的一个过去结束元素
- 我的 int main() 中出现堆栈溢出错误
- C++变量名(可以将 main 声明为变量,但对于其他函数名称则不然)
- 当我尝试在 Main 中调用插入函数时,它不是取数字?
- Visual C++ 是否需要在'main'函数结束之前暂停应用程序
- C -在main()结束之前/之后运行函数
- 有必要在main函数结束时解锁互斥锁吗?
- c++在另一个线程中观察main()的结束