1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
|
/*=========================================================================
Program: Visualization Toolkit
Module: TestThreadedTaskQueue.h
Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
All rights reserved.
See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
This software is distributed WITHOUT ANY WARRANTY; without even
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the above copyright notice for more information.
=========================================================================*/
#include "vtkThreadedTaskQueue.h"
#include "vtkLogger.h"
#include <chrono>
#include <thread>
int TestThreadedTaskQueue(int, char*[])
{
vtkThreadedTaskQueue<double, int, double> queue(
[](int i, double v) {
vtkLogF(INFO, "hey: %d, %f", i, v);
return i * v;
},
false, 2, 1);
queue.Push(1, 1.0);
queue.Push(2, 2.0);
queue.Push(3, 3.0);
while (!queue.IsEmpty())
{
double r;
if (queue.Pop(r))
{
vtkLogF(INFO, "result: %f", r);
}
else
{
vtkLogF(ERROR, "failed to pop!");
}
}
vtkThreadedTaskQueue<void, int> queue2([](int id) -> void { vtkLogF(INFO, "hi: %d", id); });
queue2.Push(0);
queue2.Push(1);
queue2.Push(2);
queue2.Flush();
return EXIT_SUCCESS;
}
|