MCPcopy Create free account
hub / github.com/bloomberg/quantum / run

Method run

quantum/impl/quantum_task_queue_impl.h:110–142  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

108
109
110inline
111void TaskQueue::run()
112{
113 while (!isInterrupted())
114 {
115 const ProcessTaskResult result = processTask();
116 if (_sharedQueue)
117 {
118 const ProcessTaskResult sharedResult = _sharedQueue->processTask();
119 sleepOnBlockedQueue(result, sharedResult);
120 }
121 else
122 {
123 sleepOnBlockedQueue(result);
124 }
125 }
126 //Clear remaining tasks
127 while (!_runQueue.empty())
128 {
129 _runQueue.front()->terminate();
130 _runQueue.pop_front();
131 _stats.decNumElements();
132 }
133 //========================= LOCKED SCOPE =========================
134 SpinLock::Guard lock(_waitQueueLock);
135 while (!_waitQueue.empty())
136 {
137 _waitQueue.front()->terminate();
138 _waitQueue.pop_front();
139 _stats.decNumElements();
140 }
141 _isIdle = true;
142}
143
144inline
145void TaskQueue::sleepOnBlockedQueue(const ProcessTaskResult& mainQueueResult)

Callers 1

processTaskMethod · 0.45

Calls 4

processTaskMethod · 0.80
decNumElementsMethod · 0.80
emptyMethod · 0.45
terminateMethod · 0.45

Tested by

no test coverage detected