File: worker.cc

package info (click to toggle)
c%2B%2B-annotations 12.2.0-2
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 13,044 kB
  • sloc: cpp: 24,337; makefile: 1,517; ansic: 165; sh: 121; perl: 90
file content (24 lines) | stat: -rw-r--r-- 552 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include "main.ih"

//code
void worker()
{
    Task task;

    while (true)
    {
        g_worker.wait();                    // wait for a request

        if (g_taskQ.empty())                // no task in the taskQ?
            break;

        g_taskQ.popFront(task);             // get the next task
        g_dispatcher.notify_all();          // notify the dispatcher: another
                                            // task can be pushed

        task();                             // execute the task
    }

    g_worker.notify_all();
}
//=