改变线程任务
Changing Thread Task?
我知道你不能杀死一个boost线程,但是你能改变它的任务吗?
目前我有一个8线程的数组。当按下按钮时,这些线程被分配一个任务。它们被分配的任务是完全独立于主线程和其他线程的。所有线程都不需要等待或诸如此类的事情,因此永远不会到达中断点。
我需要的是,在任何时候,改变每个线程正在做的任务。这可能吗?我试过循环遍历线程数组,并将每个线程对象指向一个新的线程,但当然,这对旧线程没有任何影响。
我知道你可以中断pThreads,但我找不到一个工作链接下载库来检查它。
线程不是某种神奇的对象,可以让它做一些事情。它是通过代码执行的单独路径。您的代码不能随意地在其代码库中跳转,除非您专门对其进行了编程。即使这样,它也只能在c++的规则内完成(即:调用函数)。
你不能杀死一个boost::thread
,因为杀死一个线程会彻底破坏程序员所做的一些最基本的假设。现在,您必须考虑下一行由于您既无法预测也无法防止的原因而无法执行的可能性。
这与异常处理不同,c++特别要求调用析构函数,你有能力捕捉异常并进行特殊的清理。你正在谈论执行一段代码,然后突然在已经编译的代码中插入对某个随机函数的调用。这是行不通的。
如果你想改变线程的"任务",那么你需要在构建线程时考虑"任务"。它需要经常检查它是否没有被赋予新任务,如果有,它就会切换到执行新任务。您必须定义切换何时完成,以及切换发生时世界处于什么状态。
相关文章:
- 如何创建线程序列以按照启动顺序执行任务?
- C++一个线程如何正确通信其任务已完成?
- 对于同一任务,线程的等待时间在 0 到 30000 微秒之间系统地切换
- 在iOS设备上执行并发任务时如何设置正确的线程数?
- 如何从父线程中提取 pthread 的任务 id(tid)
- 根据硬件并发性将任务平均划分为线程
- C++生产者使用者中,同一使用者线程会抓取所有任务
- 正在执行 omp 任务的线程数
- 您可以在 OpenMP 中将特定线程 ID 分组到唯一的任务组中吗?
- 是boost :: asio :: thread_pool线程在多个线程上发布任务时的安全性
- asio::strand 上的任务在单个线程上运行
- 如何在C++中创建高效的多线程任务计划程序
- 如何在多个线程上正确分发任务
- 在多线程中调度任务
- Poco任务管理器/Boost线程混合和匹配
- 将执行从一个线程移动到另一个线程,以实现任务并行性并在将来调用
- 使用C 多任务.线程或不同的设计
- 如何处理任务,同时剩余的线程完成工作
- 提升:偶尔同步任务的ASIO线程池实现
- PPL任务何时在UI线程上执行