CodingHanYa / workspace

workspace是基于C++11的轻量级异步执行框架,支持:通用任务异步并发执行、优先级任务调度、自适应动态线程池、高效静态线程池、异常处理机制等。
Apache License 2.0
916 stars 136 forks source link

关于submitForReturn函数是否能执行带参数的函数的问题 #19

Open Capsfly opened 1 year ago

Capsfly commented 1 year ago
截屏2023-04-07 00 47 09

如题,可以看出这个函数是不是只实现了 执行不带参数的函数功能啊?因为在调用std::result_of和std::packaged_task的时候,模板里面都没加参数的类型。如果我理解错误的话,up方不方便给一个普通函数的例子啊?

CodingHanYa commented 1 year ago

是不带参数的,你可以用std::bind或者lambda捕获局部变量来传入参数。

Capsfly commented 1 year ago
截屏2023-04-07 10 29 00

我试了一下,好像不行呀,up能给个例子嘛? 这是compute函数的定义

截屏2023-04-07 10 29 20
CodingHanYa commented 1 year ago
#include <hipe/hipe.h>

double func(double x) {
    hipe::util::print("hello world");
    return x;
}

int main() {
    hipe::SteadyThreadPond poo(10);
    auto tmp = poo.submitForReturn(std::bind(func, 2.5));
    poo.waitForTasks();
    hipe::util::print(tmp.get());
}

没问题呀

jack@LAPTOP-9HN8DLAB:~/code/Hipe/interfaces$ g++ tmp.cc -I ../include -lpthread && ./a.out
hello world
2.5