c++ - C++ 函数挂起与句柄恢复
问题描述
我正在尝试编写一些可以在两种环境中运行的组件代码
- 在离散事件模拟器内
- 单独作为可执行文件,具有高性能
在组件本身内部没有不同的源代码。
在 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
}
解决方案
推荐阅读
- javascript - Javascript Regex:查找并替换重复少于一定次数的字母
- javascript - 使用javascript将变量添加到url的末尾
- mobile - 当今世界的 16 个通用 CPU
- python - Seaborn histplot 无法与自定义调色板一起正常工作
- javascript - 为什么 JavaScript aws-sdk ssm getParameter 需要所有参数的权限,而不仅仅是我需要的那个?
- python - 使用python存储和更新MS访问表
- javascript - 使用 fetch 和 javascript 调用 API 时出现对象错误
- c - 拆分字符串但保留 C 中的分隔符
- hadoop - Gobblin 中的 HDFS 回溯配置
- java - 为什么我的函数中会出现 IndexOutOfBounds?