我正在尝试在 folly::ThreadedExecutor 中添加一些正常的工作,这些工作是 folly::Function。但是,folly::ThreadedExecutor 似乎只提供了接受的接口folly::Function<void()>
。如何添加带有参数和输出的函数?
// Here's a simple code segment
#include <folly/executors/ThreadedExecutor.h>
#include <folly/futures/Future.h>
int my_func(int t) {
sleep(t);
return 1;
}
int main() {
folly:ThreadedExecutor executor;
folly:Function<int(int)> job = my_func;
executor.add(job);
}
编译gcc -o folly_executor --std=c++14 -g -O0 -Wall folly_executor.cc -lgtest -lfolly -lpthread -lglog -lgflags -ldl -ldouble-conversion -levent -liberty -lboost_context
该错误表示 和 中的函数 add
原型不匹配。以下是编译错误。executor
my_func
In file included from folly_executor.cc:2:0:
/usr/local/include/folly/executors/ThreadedExecutor.h:67:8: note:
candidate: virtual void folly::ThreadedExecutor::add(folly::Func)
void add(Func func) override;
^~~
/usr/local/include/folly/executors/ThreadedExecutor.h:67:8: note: no
known conversion for argument 1 from 'folly::Function<int(int)>' to
'folly::Func {aka folly::Function<void()>}'
我想知道添加函数原型的限制是否有必要的原因。如果不是,它必须是正确的方法。
顺便说一句,Github 上的教程和文档总是使用 folly::executor 和 folly:Future。我应该以这种方式使用 folly:Function 吗?