0

我希望能够在 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()的线程中传递任何东西。很可能不可能赶上主要功能的结尾,但我想如果有人知道这一点,我会问。

4

1 回答 1

-1

听起来您需要一个信号量,毕竟,您需要防止程序关闭,直到所有线程完成程序退出时需要执行的任何操作。

所以你需要主线程发出它正在停止的信号,然后等待其他线程(如果有多个线程)完成并报告它们已经完成。最简单的方法是设置一个事件来通知其他线程,然后等到每个线程发出信号量设置为您要等待的线程。

Kennel 对象确实适合这一点,它们跨进程工作,因此它们将跨共享库工作。

于 2014-05-26T22:54:28.360 回答