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

How can we re-initialize a thread without killing it?

本文关键字:线程 情况下 初始化 我们      更新时间:2023-10-16

有没有什么方法可以在不杀死线程的情况下重新初始化线程。我想使用现有的线程,但他们会从头开始。

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

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

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

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

还要注意,虽然您可以通过取消和启动线程来实现类似的效果,但线程取消通常是非常危险的(您可能会泄漏资源),即使可能的话(线程必须达到取消点),在大多数情况下都应该避免。因此,您回到了原点:在函数中实现逻辑以检测事件,并使用您想要使用的任何启动定义重新启动

您可能有两个事件:重新启动停止。线程函数将在循环中等待它们中的任何一个。如果检测到重新启动,它将执行任务并返回等待事件。如果它检测到停止,它将简单地返回。