1 //===----------- TaskDispatchTest.cpp - Test TaskDispatch APIs ------------===// 2 // 3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4 // See https://llvm.org/LICENSE.txt for license information. 5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6 // 7 //===----------------------------------------------------------------------===// 8 9 #include "llvm/ExecutionEngine/Orc/TaskDispatch.h" 10 #include "llvm/Config/llvm-config.h" // for LLVM_ENABLE_THREADS 11 #include "gtest/gtest.h" 12 13 #include <future> 14 15 using namespace llvm; 16 using namespace llvm::orc; 17 18 TEST(InPlaceTaskDispatchTest, GenericNamedTask) { 19 auto D = std::make_unique<InPlaceTaskDispatcher>(); 20 bool B = false; 21 D->dispatch(makeGenericNamedTask([&]() { B = true; })); 22 EXPECT_TRUE(B); 23 D->shutdown(); 24 } 25 26 #if LLVM_ENABLE_THREADS 27 TEST(DynamicThreadPoolDispatchTest, GenericNamedTask) { 28 auto D = std::make_unique<DynamicThreadPoolTaskDispatcher>(std::nullopt); 29 std::promise<bool> P; 30 auto F = P.get_future(); 31 D->dispatch(makeGenericNamedTask( 32 [P = std::move(P)]() mutable { P.set_value(true); })); 33 EXPECT_TRUE(F.get()); 34 D->shutdown(); 35 } 36 #endif 37