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
|
#include "main.ih"
//code
void jobs()
{
while (true)
{
string line = nextCommand();
if (line.empty()) // no command? jobs() done.
{
g_done = true;
break;
}
g_dispatcher.wait(); // wait for an available worker
if (g_done.load()) // if a worker found an error
break; // then quit anyway
newTask(line); // push a new task (and its
// results)
g_worker.notify_all(); // inform the workers: job is
// available
}
g_worker.notify_all(); // end the workers at an empty Q
}
//=
|