when_all can accept non-tasks
This commit is contained in:
parent
98608aae9b
commit
df9f28a1a1
|
@ -928,7 +928,6 @@ inline Task<> when_all(std::vector<Awaiter> tasks,
|
||||||
trantor::EventLoop *loop = nullptr)
|
trantor::EventLoop *loop = nullptr)
|
||||||
{
|
{
|
||||||
static_assert(is_awaitable_v<Awaiter>);
|
static_assert(is_awaitable_v<Awaiter>);
|
||||||
static_assert(std::is_same_v<await_result_t<Awaiter>, void>);
|
|
||||||
std::exception_ptr eptr;
|
std::exception_ptr eptr;
|
||||||
std::atomic_size_t counter = tasks.size();
|
std::atomic_size_t counter = tasks.size();
|
||||||
internal::WaitForNotify waiter;
|
internal::WaitForNotify waiter;
|
||||||
|
@ -937,7 +936,7 @@ inline Task<> when_all(std::vector<Awaiter> tasks,
|
||||||
[](std::exception_ptr &eptr,
|
[](std::exception_ptr &eptr,
|
||||||
std::atomic_size_t &counter,
|
std::atomic_size_t &counter,
|
||||||
internal::WaitForNotify &waiter,
|
internal::WaitForNotify &waiter,
|
||||||
Task<> task) -> AsyncTask {
|
Awaiter task) -> AsyncTask {
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
co_await task;
|
co_await task;
|
||||||
|
|
|
@ -281,4 +281,12 @@ DROGON_TEST(WhenAll)
|
||||||
CHECK(results.size() == 2);
|
CHECK(results.size() == 2);
|
||||||
CHECK(results[0] == 42);
|
CHECK(results[0] == 42);
|
||||||
CHECK(results[1] == 42);
|
CHECK(results[1] == 42);
|
||||||
|
|
||||||
|
// Check waiting on non-task works
|
||||||
|
auto sleep = sleepCoro(drogon::app().getLoop(), 0.001);
|
||||||
|
auto sleep2 = sleepCoro(drogon::app().getLoop(), 0.001);
|
||||||
|
std::vector<decltype(sleep)> tasks5;
|
||||||
|
tasks5.emplace_back(std::move(sleep));
|
||||||
|
tasks5.emplace_back(std::move(sleep2));
|
||||||
|
sync_wait(when_all(std::move(tasks5)));
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue