51 #ifndef vtkThreadedTaskQueue_h
52 #define vtkThreadedTaskQueue_h
56 #include <condition_variable>
63 #if !defined(__WRAP__)
73 template <
typename R,
typename... Args>
78 int buffer_size = -1,
int max_concurrent_tasks = -1);
84 void Push(Args&&... args);
115 std::unique_ptr<vtkThreadedTaskQueueInternals::TaskQueue<R> > Tasks;
116 std::unique_ptr<vtkThreadedTaskQueueInternals::ResultQueue<R> > Results;
119 std::unique_ptr<std::thread[]> Threads;
122 template <
typename... Args>
127 int buffer_size = -1,
int max_concurrent_tasks = -1);
133 void Push(Args&&... args);
152 std::unique_ptr<vtkThreadedTaskQueueInternals::TaskQueue<void> > Tasks;
154 std::condition_variable ResultsCV;
155 std::mutex NextResultIdMutex;
156 std::atomic<std::uint64_t> NextResultId;
159 std::unique_ptr<std::thread[]> Threads;
162 #include "vtkThreadedTaskQueue.txx"
164 #endif // !defined(__WRAP__)