Beispiel #1
0
int add_to_queue(TaskPtr t)
{
    if (is_task_already_exist(t))
    {
        LOG_STRING("Task %d duplicated!!", t->id);
        return -1;
    }

    qu.push(t);
    tasklist.push_back(t);
    return 0;
}
Beispiel #2
0
TaskPtr serve_queue()
{
    TaskPtr t = qu.front();

    LOG_STRING("task %d", t->id);
    
    g_tqs = TQS_BUSY;
    
    if (run_task(t)) // Failed
    {
        LOG_STRING("task %d failed", t->id);
        return 0;
    }

    qu.pop();
    qu_back.push_back(t);
    
    if (qu.empty())
    {
        g_tqs = TQS_FINISHED;
    }
    
    return t;
}