MCPcopy Create free account
hub / github.com/Tom94/tev / enqueueTask

Method enqueueTask

include/tev/ThreadPool.h:48–71  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

46 }
47
48 template <std::invocable F> auto enqueueTask(F&& f, int priority, bool stopToken = false) {
49 using return_type = std::invoke_result_t<F>;
50
51 const auto task = std::make_shared<std::packaged_task<return_type()>>(std::forward<F>(f));
52 auto res = task->get_future();
53
54 if (mShuttingDown) {
55 return res;
56 }
57
58 {
59 const std::scoped_lock lock{mTaskQueueMutex};
60 mTaskQueue.push({
61 .fun = [task]() { (*task)(); },
62 .priority = priority,
63 .stopToken = stopToken,
64 });
65 }
66
67 ++mNumTasksInSystem;
68 mTaskQueueSemaphore.signal();
69
70 return res;
71 }
72
73 auto enqueueStopToken() {
74 return enqueueTask([] {}, std::numeric_limits<int>::max(), true);

Callers 2

computeAsyncMethod · 0.80
await_suspendMethod · 0.80

Calls 1

pushMethod · 0.45

Tested by

no test coverage detected