diff options
author | Davide Italiano <davide@freebsd.org> | 2016-11-28 09:17:12 +0000 |
---|---|---|
committer | Davide Italiano <davide@freebsd.org> | 2016-11-28 09:17:12 +0000 |
commit | 0f0d5d8f8d4c0b1d325822406cb1a94fff3bf105 (patch) | |
tree | 74dc5f9cebe2e8de6e9ba827bc5f9c7e5e1a4e25 /llvm/lib/Support/ThreadPool.cpp | |
parent | 3dd87dad64e664a35ce5a455cd66d74be43374aa (diff) | |
download | bcm5719-llvm-0f0d5d8f8d4c0b1d325822406cb1a94fff3bf105.tar.gz bcm5719-llvm-0f0d5d8f8d4c0b1d325822406cb1a94fff3bf105.zip |
[ThreadPool] Rollback recent changes until I figure out the breakage.
llvm-svn: 288018
Diffstat (limited to 'llvm/lib/Support/ThreadPool.cpp')
-rw-r--r-- | llvm/lib/Support/ThreadPool.cpp | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/llvm/lib/Support/ThreadPool.cpp b/llvm/lib/Support/ThreadPool.cpp index 022f32a1378..db03a4d6240 100644 --- a/llvm/lib/Support/ThreadPool.cpp +++ b/llvm/lib/Support/ThreadPool.cpp @@ -82,7 +82,7 @@ void ThreadPool::wait() { [&] { return !ActiveThreads && Tasks.empty(); }); } -void ThreadPool::asyncImpl(TaskTy Task) { +std::shared_future<ThreadPool::VoidTy> ThreadPool::asyncImpl(TaskTy Task) { /// Wrap the Task in a packaged_task to return a future object. PackagedTaskTy PackagedTask(std::move(Task)); auto Future = PackagedTask.get_future(); @@ -96,6 +96,7 @@ void ThreadPool::asyncImpl(TaskTy Task) { Tasks.push(std::move(PackagedTask)); } QueueCondition.notify_one(); + return Future.share(); } // The destructor joins all threads, waiting for completion. @@ -135,7 +136,7 @@ void ThreadPool::wait() { } } -void ThreadPool::asyncImpl(TaskTy Task) { +std::shared_future<ThreadPool::VoidTy> ThreadPool::asyncImpl(TaskTy Task) { #ifndef _MSC_VER // Get a Future with launch::deferred execution using std::async auto Future = std::async(std::launch::deferred, std::move(Task)).share(); @@ -147,6 +148,7 @@ void ThreadPool::asyncImpl(TaskTy Task) { PackagedTaskTy PackagedTask([Future](bool) -> bool { Future.get(); return false; }); #endif Tasks.push(std::move(PackagedTask)); + return Future; } ThreadPool::~ThreadPool() { |