c++ - 暂停和恢复线程功能,将线程返回池
问题描述
我正在寻找一种方法来中断线程函数的执行,以将正在执行的线程返回到池中。当满足某些条件时,线程函数的其余部分应该有资格再次被调度并成功完成。
这种方法背后的原因是线程函数将产生一个新进程,大部分工作将在其中完成。在等待结果时,线程基本上什么都不做。不过,我确实有许多这样的任务是并行的,而且我不能让池的大小与潜在的并行任务一样大。
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 机器上运行。
解决方案
推荐阅读
- r - 如果参加条件,如何过滤同一字符的每一行
- python - Kivy:如何在“最小化”、“最大化”、“关闭”按钮的同一行中创建菜单栏
- java - CWNEN0030E 在 Websphere Liberty 中查找数据源 JNDI 时出错
- python-3.x - 检查整数是否只包含奇数
- python - 从用户输入创建对象
- python - 格式问题
- java - 解析列表时出现 JsonMappingException
- html - Tailwindcss 不适用于 NextJS 链接标签
- google-cloud-platform - 如何将 DCM 标准报告展示次数与 Big Query 的拉取匹配?
- flutter - 小部件不会与其他小部件重叠