gtsam
Loading...
Searching...
No Matches
TaskScheduler.h
Go to the documentation of this file.
1/* ----------------------------------------------------------------------------
2 * GTSAM Copyright 2010, Georgia Tech Research Corporation,
3 * Atlanta, Georgia 30332-0415
4 * All Rights Reserved
5 * Authors: Frank Dellaert, et al. (see THANKS for the full author list)
6 * See LICENSE for the license information
7 * -------------------------------------------------------------------------- */
8
30
31#pragma once
32
34
35#include <deque>
36
37namespace gtsam {
38
39namespace detail {
42 using Metadata = std::monostate;
43
44 template <typename TaskPtr>
45 using Container = std::deque<TaskPtr>;
46
47 template <typename TaskPtr>
48 static void push(Container<TaskPtr>& container, TaskPtr task) {
49 container.push_back(std::move(task));
50 }
51
52 template <typename TaskPtr>
53 static bool popLocal(Container<TaskPtr>& container, TaskPtr& out) {
54 if (container.empty()) return false;
55 out = std::move(container.back());
56 container.pop_back();
57 return true;
58 }
59
60 template <typename TaskPtr>
61 static bool popSteal(Container<TaskPtr>& container, TaskPtr& out) {
62 if (container.empty()) return false;
63 out = std::move(container.front());
64 container.pop_front();
65 return true;
66 }
67};
68} // namespace detail
69
81template <typename Y>
83
84} // namespace gtsam
Global functions in a separate testing namespace.
Definition chartTesting.h:28
Scheduler< Y, detail::TaskSchedulerPolicy > TaskScheduler
Thread pool scheduler that executes tasks without priority ordering.
Definition TaskScheduler.h:82
Thread pool scheduler parameterized by a queue Policy.
Definition Scheduler.h:63
Queue policy for TaskScheduler: deque with local LIFO and stolen FIFO.
Definition TaskScheduler.h:41
Policy-based work-stealing scheduler.