MCPcopy Create free account
hub / github.com/Gecode/gecode / exec

Method exec

gecode/support/thread/thread.cpp:49–72  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

47 Thread::Run* Thread::idle = nullptr;
48
49 void
50 Thread::Run::exec(void) {
51 while (true) {
52 // Execute runnable
53 {
54 GECODE_ASSUME(r != nullptr);
55 Runnable* e = r.exchange(nullptr);
56 assert(e != nullptr);
57 e->run();
58 if (e->todelete()) {
59 Terminator* t = e->terminator();
60 delete e;
61 if (t)
62 t->terminated();
63 }
64 }
65 // Put into idle stack
66 Thread::m()->acquire();
67 n=Thread::idle; Thread::idle=this;
68 Thread::m()->release();
69 // Wait for next runnable
70 e.wait();
71 }
72 }
73
74 Thread::Run::Run(Runnable* r0) {
75#ifdef GECODE_HAS_THREADS

Callers 5

exploreFunction · 0.80
preferencesMethod · 0.80
printMethod · 0.80
mainFunction · 0.80
RunMethod · 0.80

Calls 8

mFunction · 0.85
todeleteMethod · 0.80
terminatedMethod · 0.80
runMethod · 0.45
terminatorMethod · 0.45
acquireMethod · 0.45
releaseMethod · 0.45
waitMethod · 0.45

Tested by

no test coverage detected