| 110 | } |
| 111 | |
| 112 | class Job |
| 113 | { |
| 114 | public: |
| 115 | explicit Job(Total &total, JobData data, Id id) |
| 116 | : total { total }, data { data }, id { id } { } |
| 117 | |
| 118 | void operator()() |
| 119 | { |
| 120 | log().nospace() << id << " sleep " << toMilliseconds(data.sleepingTime) << " ms..."; |
| 121 | std::this_thread::sleep_for(data.sleepingTime); |
| 122 | |
| 123 | const auto updatedTotal = (total += data.summand); |
| 124 | log().nospace() << id << " +" << data.summand << " => " << updatedTotal; |
| 125 | } |
| 126 | |
| 127 | private: |
| 128 | Total &total; |
| 129 | const JobData data; |
| 130 | const Id id; |
| 131 | }; |
| 132 | |
| 133 | class Enqueuer |
| 134 | { |