这几天我一直在研究并尝试测试libunifex的能力,但我发现它并不像我预期的那样工作。
#include <unifex/sync_wait.hpp>
#include <unifex/then.hpp>
#include <unifex/when_all.hpp>
#include <unifex/single_thread_context.hpp>
#include <iostream>
int main() {
using namespace unifex;
single_thread_context context;
sender auto s0 = schedule(context.get_scheduler());
sender auto s1 = then(s0, [](){
std::cout << "do complex computation" << std::endl;
});
sender auto s21 = then(s1, [](){});
sender auto s22 = then(s1, [](){});
sync_wait(when_all(s21, s22));
}
在我的需求中,我在s1中做了一个复杂的计算,所以我期望复杂的计算只做一次,但是它做了两次复杂的计算,我有两个问题:
- paper是否支持我的要求(使s1计算一次)?(抱歉,本文对我来说有点复杂。)
1.我发现分割功能在libunifex中还没有实现,这和我的需求有关系吗?
1条答案
按热度按时间jogvjijk1#
“复杂计算”之所以做了两次是因为你叫了它两次。第一次是在:
另一个是在: