请给出folly 库多线程示例
时间: 2023-07-26 21:16:02 浏览: 169
以下是使用 Folly 实现多线程的示例代码:
```c++
#include <iostream>
#include <folly/executors/GlobalExecutor.h>
#include <folly/futures/Future.h>
using namespace std;
using namespace folly;
int main() {
// 创建一个线程池,最多有 4 个线程
auto executor = std::make_shared<GlobalExecutor>(4);
// 使用 executor 异步执行一个任务
auto future = via(executor.get(), []() {
cout << "Hello, world!" << endl;
return 42;
});
// 等待任务完成,并输出结果
future.then([](int result) {
cout << "Result: " << result << endl;
}).wait();
return 0;
}
```
以上代码中,我们首先创建了一个线程池,然后使用 `via` 方法在该线程池中异步执行一个任务。在任务完成后,我们使用 `then` 方法注册了一个回调函数,在回调函数中输出任务的返回值。最后,我们调用 `wait` 等待任务完成。
除了上述示例中的 `via` 方法,Folly 还提供了许多其他的多线程工具,如 `Future`、`Promise`、`Barrier`、`AtomicHashMap` 等,可以根据具体需求选择使用。
阅读全文