ThreadWeaver

inconstructionstate.cpp
1 /* -*- C++ -*-
2  This file implements the InConstructionState class.
3 
4  SPDX-FileCopyrightText: 2005-2013 Mirko Boehm <[email protected]>
5 
6  SPDX-License-Identifier: LGPL-2.0-or-later
7 
8  $Id: InConstructionState.cpp 30 2005-08-16 16:16:04Z mirko $
9 */
10 
11 #include "inconstructionstate.h"
12 
13 #include "threadweaver.h"
14 #include "weaver.h"
15 
16 namespace ThreadWeaver
17 {
18 InConstructionState::InConstructionState(QueueSignals *weaver)
19  : WeaverImplState(weaver)
20 {
21 }
22 
24 {
25  // this request is not handled in InConstruction state
26 }
27 
29 {
30  // this request is not handled in InConstruction state
31 }
32 
34 {
35  Q_ASSERT(wasBusy == false);
36  // As long as we are in the construction state, no jobs will be given
37  // to the worker threads. The threads will be suspended. They will
38  // return from the blocked state when jobs are queued. By then, we
39  // should not be in InConstruction state anymore, and we hand the job
40  // application over to the then active state.
41  while (weaver()->state()->stateId() == InConstruction) {
43  }
44  return weaver()->applyForWork(th, wasBusy);
45 }
46 
48 {
49  return InConstruction;
50 }
51 
52 }
StateId stateId() const override
reimpl
JobPointer applyForWork(Thread *th, bool wasBusy) override
Assign a job to an idle thread.
JobPointer applyForWork(Thread *thread, bool wasBusy) override
Assign a job to the calling thread.
Definition: weaver.cpp:573
Weaver * weaver() override
Provide correct return type for WeaverImpl states.
const State * state() const override
Return the state of the weaver object.
void waitForAvailableJob(Thread *th) override
Wait for a job to become available.
Definition: weaver.cpp:579
Thread represents a worker thread in a Queue's inventory.
Definition: thread.h:27
void suspend() override
Suspend job processing.
void resume() override
Resume job processing.
This file is part of the KDE documentation.
Documentation copyright © 1996-2023 The KDE developers.
Generated on Tue Feb 7 2023 04:09:38 by doxygen 1.8.17 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.