C++ 提升 :fiber - How can i interrupt a fiber or join waiting until a maximum time?

标签 c++ fiber

如何使用 C++ boost 停止(中断)光纤?

例如

fiber.stop()

我如何使用 c+ boost 执行 fiber join(time)(默认 api 不接受最长等待时间)? 例如:

fiber.join(1000);

有可能挂起一个纤程,在磁盘上序列化它,然后在系统中重新加载它吗?

最佳答案

boost.fiber 仿照 std::threads 的 API - 没有中断功能,也没有定时连接。

您不能序列化纤程,因为这意味着序列化纤程的堆栈,这是不可能的……至少在没有编译器支持的情况下是不可能的。

不推荐堆栈序列化,因为编译器必须注意指向分配在堆栈上的对象的指针,例如必须在相同的地址重新分配对象,或者必须在反序列化纤程(重新加载)后重写指针。

RAII 违规将很容易发生等......

关于C++ 提升 :fiber - How can i interrupt a fiber or join waiting until a maximum time?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47948804/

相关文章:

c++ - 当用户在 C++ 上键入时,如何检查用户的输入?

c++ - 将字符串与 ifstream::getline 生成的字符串进行比较

c++ - 有没有新的 _malloca 等价物

c++ - 使用 Boost::Fiber 的多个共享工作池

ruby - ruby 纤维程序中的控制流程

ruby 线程 block ?

c++ - 如何使用 gdb 查看 C++ 类在内存中的布局?

python - 使用 openssl/bn.h 将 c++ 痛饮到 python

c# - .net 中有光纤 api 吗?

java - 在 Fibers Quasar 之间传递消息