如何在不杀死线程的情况下重新初始化线程?

时间:2012-02-02 12:13:23

标签: c++ unix

有没有办法,我们可以通过它重新初始化一个线程而不杀死它。我想使用现有的线程,但它们将从头开始。

3 个答案:

答案 0 :(得分:1)

创建一个管理线程的类。 在这个类的run方法中,它等待一些工作以函数指针或其他实现“工作”接口的类的形式分配给类。

一旦分配了工作,线程就可以停止等待并执行工作。 一旦工作完成,线程就会坐下来等待,直到为它分配更多的工作。

这允许您保持线程运行并等待工作,而不必在新工作出现时重新创建它。

答案 1 :(得分:1)

你要求的只能通过你的线程函数的逻辑来实现。线程库/操作系统不知道您的逻辑,也不可能知道您希望它在哪里进行重新初始化

另请注意,虽然您可以通过取消和启动线程来实现类似的功能,但是即使可能(线程必须达到取消点),线程取消通常也很危险(您可能会泄漏资源),并且在大多数情况下应该避免。所以你回到第一个方面:在函数中实现逻辑以检测事件,并使用你想要使用的start的任何定义 restart

答案 2 :(得分:0)

您可以有两个事件:重新启动停止。你的线程函数会在循环中等待其中任何一个。如果它检测到重新启动,它将执行任务并返回等待事件。如果它检测到停止,则只会返回。