C++ 从执行boost::fibers中排除一个线程
我正在创建一个多线程程序,在执行实际执行繁重的代码时,它高度依赖于C++ 从执行boost::fibers中排除一个线程,c++,multithreading,boost,boost-fiber,C++,Multithreading,Boost,Boost Fiber,我正在创建一个多线程程序,在执行实际执行繁重的代码时,它高度依赖于boost::fibers 我想要实现的目标: 我的主线程知道何时激活和运行哪个光纤,以及何时收集光纤执行后提供的未来。 由于我的软件运行在一个具有100多个内核的高度并行环境中,因此如果可能的话,我会启动尽可能多的工作线程。工作线程应该运行光纤调度程序,如boost::fibers::algo::work\u。因此,他们应该执行主线程生成的所有光纤 问题是什么: 由于我的主线程非常擅长为100多个工作线程创建和计时所有光纤,因此
boost::fibers
我想要实现的目标:
我的主线程知道何时激活和运行哪个光纤,以及何时收集光纤执行后提供的未来。
由于我的软件运行在一个具有100多个内核的高度并行环境中,因此如果可能的话,我会启动尽可能多的工作线程。工作线程应该运行光纤调度程序,如boost::fibers::algo::work\u
。因此,他们应该执行主线程生成的所有光纤
问题是什么:
由于我的主线程非常擅长为100多个工作线程创建和计时所有光纤,因此我希望避免主线程加入任何光纤的执行。
这意味着,我的主线程应该只关心启动光纤并在完成执行后收集它们的未来。
但是,我也不知道如何将我的主光纤排除在执行光纤之外
可能的、幼稚的解决方案:
尽管我不知道如何恰当地解决我的问题,我还是考虑了一些可能性
boost::fibers
的一个定制点。因此,可能会创建一个自定义调度程序,将主线程排除在执行之外boost::fibers::buffered_通道
在线程之间传输任务:但是,我不知道这是否是一个好的解决方案,因为这消除了使用光纤调度器的巨大可能性boost::fibers
boost::fibers
库的新手,我想知道实现我的目标的最佳方法是什么
问候并感谢您的帮助