diff --git a/mlir/lib/ExecutionEngine/AsyncRuntime.cpp b/mlir/lib/ExecutionEngine/AsyncRuntime.cpp --- a/mlir/lib/ExecutionEngine/AsyncRuntime.cpp +++ b/mlir/lib/ExecutionEngine/AsyncRuntime.cpp @@ -59,7 +59,8 @@ extern "C" MLIR_ASYNCRUNTIME_EXPORT void mlirAsyncRuntimeExecute(CoroHandle handle, CoroResume resume) { - (*resume)(handle); + std::thread thread([handle, resume]() { (*resume)(handle); }); + thread.detach(); } extern "C" MLIR_ASYNCRUNTIME_EXPORT void diff --git a/mlir/lib/ExecutionEngine/CMakeLists.txt b/mlir/lib/ExecutionEngine/CMakeLists.txt --- a/mlir/lib/ExecutionEngine/CMakeLists.txt +++ b/mlir/lib/ExecutionEngine/CMakeLists.txt @@ -107,5 +107,6 @@ LINK_LIBS PUBLIC mlir_c_runner_utils_static + ${LLVM_PTHREAD_LIB} ) target_compile_definitions(mlir_async_runtime PRIVATE mlir_async_runtime_EXPORTS)