首页 > 解决方案 > C++ 函数挂起与句柄恢复

问题描述

我正在尝试编写一些可以在两种环境中运行的组件代码

  1. 在离散事件模拟器内
  2. 单独作为可执行文件,具有高性能

在组件本身内部没有不同的源代码。

在 1. 将有一个队列保存可调用对象,其中头部被不断移除和调用。可调用对象可能会向队列中添加更多可调用对象。

我有一个问题,在可调用组件内部我可能有类似以下内容

callable(){
  useful_result = external_function()
}

其中 external_function 在两个环境之间可能不同(依赖注入)

在环境 2 中,external_function 可能类似于

external_function2(){
  //do work
  return result
}

这很棒,一切正常。然而,我想模仿的行为是用 external_function1 替换这个 external_function2,它利用了队列。例如(在伪代码中)

external_function1(){
   //do some things
   pause! queue.push_back(resume_here) // pause and resume_here resumes here when called!
   //do more things
   return result
}

这里的 resume 是某种神奇的可调用对象,当从队列中弹出时,它将从 //do more things 恢复函数。

这种功能在 C++ 中是否可行?

如果我错过了一些非常明显的事情,我深表歉意。

谢谢你。

附言。在Javascript中我可以像

exeternal_function1(){
   //do some things
   await new Promise((resolve,reject),()=>{
       queue.push(()=>{resolve()});
     });
   //do more things
   return result
}

标签: c++

解决方案


推荐阅读