我想实现一个基于任务的模型来处理和消化我的应用程序的工作量,我想现在我们已经有了C ++ 11/14,现在是时候尝试自己实现类似的东西。
使用“基于任务的模型”,我的意思是不会创建过多的线程,这样就会使缓存一致性协议受到威胁,并且实现起来相对便宜且简单。
当然,对于C ++ 11/14,我也有原子操作和CAS,所以我几乎都有用于并发编程的现代构建模块。
我不确定如果我必须勾勒出这一点,如果这可能会改变你的答案,但在C ++ 11/14中,我发现在将函数对象作为第一类对象进行管理方面存在一些困难“流水线“它们,就像执行一系列函数函数一样,特别是你可以达到多态lambda,但是函数对象的返回类型的基本问题仍然存在,如果可以,你就不能将2个函数链接在一起” t将一个函数的返回类型“附加”到下一个函数的接口。我认为这是AFAIK语言的限制,即使使用最新的C ++ 14标准,monad也不是C ++中100%可行的东西。
无论如何,请建议替代工作窃取队列模型。