改变线程任务

Changing Thread Task?

本文关键字:任务 线程 改变      更新时间:2023-10-16

我知道你不能杀死一个boost线程,但是你能改变它的任务吗?

目前我有一个8线程的数组。当按下按钮时,这些线程被分配一个任务。它们被分配的任务是完全独立于主线程和其他线程的。所有线程都不需要等待或诸如此类的事情,因此永远不会到达中断点。

我需要的是,在任何时候,改变每个线程正在做的任务。这可能吗?我试过循环遍历线程数组,并将每个线程对象指向一个新的线程,但当然,这对旧线程没有任何影响。

我知道你可以中断pThreads,但我找不到一个工作链接下载库来检查它。

线程不是某种神奇的对象,可以让它做一些事情。它是通过代码执行的单独路径。您的代码不能随意地在其代码库中跳转,除非您专门对其进行了编程。即使这样,它也只能在c++的规则内完成(即:调用函数)。

你不能杀死一个boost::thread,因为杀死一个线程会彻底破坏程序员所做的一些最基本的假设。现在,您必须考虑下一行由于您既无法预测也无法防止的原因而无法执行的可能性。

这与异常处理不同,c++特别要求调用析构函数,你有能力捕捉异常并进行特殊的清理。你正在谈论执行一段代码,然后突然在已经编译的代码中插入对某个随机函数的调用。这是行不通的。

如果你想改变线程的"任务",那么你需要在构建线程时考虑"任务"。它需要经常检查它是否没有被赋予新任务,如果有,它就会切换到执行新任务。您必须定义切换何时完成,以及切换发生时世界处于什么状态。