首页 > 解决方案 > 暂停和恢复线程功能,将线程返回池

问题描述

我正在寻找一种方法来中断线程函数的执行,以将正在执行的线程返回到池中。当满足某些条件时,线程函数的其余部分应该有资格再次被调度并成功完成。

这种方法背后的原因是线程函数将产生一个新进程,大部分工作将在其中完成。在等待结果时,线程基本上什么都不做。不过,我确实有许多这样的任务是并行的,而且我不能让池的大小与潜在的并行任务一样大。

void t1()
{
  auto ipc_sock = exec_new_process(); // non-blocking
  auto ret = retrieve_result(ipc_sock); // should return current thread to pool while waiting
  return ret;
}

boost::asio::thread_pool pool(1);

boost::asio::post(pool, t1);
// should start execution even though the first task hasn't fully finished yet
boost::asio::post(pool, t1);

该程序将在 Linux 机器上运行。

标签: c++multithreadingc++17

解决方案


推荐阅读