Commit 98759027 authored by Pranav Thulasiram Bhat's avatar Pranav Thulasiram Bhat Committed by Facebook GitHub Bot

FiberManager - addFiber

Summary:
This diff implements addFiber, a wrapper around fiberManager.addTask.

It should mainly be used to 'fire-and-forget' a fiber.

Reviewed By: A5he

Differential Revision: D22073924

fbshipit-source-id: 52516e86b7b03a7bc59166fae4db79f60cddffb7
parent 7c81dc02
......@@ -37,6 +37,13 @@ auto addFiberFuture(F&& func, FiberManager& fm) {
}
} // namespace detail
/**
* Schedule an async-annotated functor to run on a fiber manager.
*/
template <typename F>
void addFiber(F&& func, FiberManager& fm) {
fm.addTask([func = std::forward<F>(func)] { return init_await(func()); });
}
} // namespace async
} // namespace fibers
} // namespace folly
......@@ -263,4 +263,21 @@ TEST(FiberManager, asyncFiberManager) {
});
EXPECT_TRUE(completed);
}
{
bool outerCompleted = false;
bool innerCompleted = false;
async::executeOnFiberAndWait([&]() -> async::Async<void> {
outerCompleted = true;
async::addFiber(
[&]() -> async::Async<void> {
innerCompleted = true;
return {};
},
FiberManager::getFiberManager());
return {};
});
EXPECT_TRUE(outerCompleted);
EXPECT_TRUE(innerCompleted);
}
}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment