在线程 A 中创建的纤程可以切换到在线程 B 中创建的另一个纤程吗?为了使问题更具体,一些操作系统具有原生实现的光纤(windows 光纤),
其他需要自己实现(在 linux 中使用 setjump longjump 等)。
例如, Libcoro将所有这些都包装在一个 API 中(对于 Windows,它只是原生光纤的包装器,对于 Linux,它自己实现它等等)
那么,如果可以在线程之间迁移光纤,你能给我一个在 c/c++ 中的 windows (linux) 中的用法示例吗?
我在 boost 库文档中发现了一些关于光纤迁移的内容,但它的实现和平台依赖性还不够具体。例如,我仍然想了解如何自己使用 Windows 光纤(或在 linux 上使用 Libcoro)。
如果以一般方式不可能,为什么会这样?
我知道 Fiber 旨在用作在单个线程上协作多任务的轻量级线程,与常规线程相比,它们具有廉价的上下文切换,并且它们简化了编程。一个示例用法是具有多个线程的系统,每个线程都有多个纤程在其父线程上执行某种工作层次结构(从不离开父线程)。
即使这不是预期用途,我仍然想学习如何以一般方式进行操作,因为我认为我可以通过在线程之间迁移纤程来优化工作系统上的工作负载。