如何在叉上克隆Boost ASIO协程?

看看带有协程的Boost ASIO http服务器示例我在想,如果使用的克隆方法是安全的:

    // We "fork" by cloning a new server coroutine to handle the connection.
    // After forking we have a parent coroutine and a child coroutine. Both
    // parent and child continue execution at the following line. They can
    // be distinguished using the functions coroutine::is_parent() and
    // coroutine::is_child().
    fork server(*this)();

使用该行,服务器对象是从当前对象构建的副本。

但是不存在以下情况发生的可能性:

  • 克隆的儿童协同程序发出收益
  • 因此,孩子的协同身体被留下
  • 因此,孩子的operator()()方法被留下
  • 父级破坏子对象
  • 父母开始新的迭代并收益
  • 一个由孩子调用的异步方法结束
  • 因此,现在(被破坏的)儿童协同程序重新进入
  • 如果它是安全的,为什么?

    链接地址: http://www.djcxy.com/p/53165.html

    上一篇: How to clone Boost ASIO coroutine on fork?

    下一篇: Coroutines in F#