Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/154.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;带句柄的函数挂起以恢复_C++ - Fatal编程技术网

C++ C++;带句柄的函数挂起以恢复

C++ C++;带句柄的函数挂起以恢复,c++,C++,我正在尝试编写一些可以在两个环境中运行的组件代码 在离散事件模拟器中 自身作为可执行文件,具有高性能 在组件本身内部没有不同的源代码 在1。将有一个队列容纳可调用的对象,在该队列中头部将被不断地移除和调用。callable可以向队列中添加更多callable 我有一个问题,在一个可调用的组件中,我可能有如下内容 callable(){ useful_result = external_function() } 两个环境之间的外部_函数可能不同(依赖注入) 在环境2中。外部函数可能类似于 e

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

  • 在离散事件模拟器中
  • 自身作为可执行文件,具有高性能
  • 在组件本身内部没有不同的源代码

    在1。将有一个队列容纳可调用的对象,在该队列中头部将被不断地移除和调用。callable可以向队列中添加更多callable

    我有一个问题,在一个可调用的组件中,我可能有如下内容

    callable(){
      useful_result = external_function()
    }
    
    两个环境之间的外部_函数可能不同(依赖注入)

    在环境2中。外部函数可能类似于

    external_function2(){
      //do work
      return result
    }
    
    exeternal_function1(){
       //do some things
       await new Promise((resolve,reject),()=>{
           queue.push(()=>{resolve()});
         });
       //do more things
       return result
    }
    
    这很好,一切都很好。然而,我想要模仿的行为是将这个外部函数2替换为外部函数1,它利用了队列。例如(在伪代码中)

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

    这是C++中的功能吗?

    如果我错过了非常明显的事情,我道歉

    多谢各位

    另外,在Javascript中,我可以

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

    有STD::承诺和相关类,分别是:STD::异步(甚至C++ 20中的协同程序),但很可能你并不需要它们。