| 197 | |
| 198 | template<class Jobs, class RetType> |
| 199 | forceinline Job<RetType>* |
| 200 | RunJobs<Jobs,RetType>::Master::next(int& i) { |
| 201 | m.acquire(); |
| 202 | Job<RetType>* j; |
| 203 | if (jobs() && !stopped()) { |
| 204 | j = jobs.job(); i=idx++; |
| 205 | } else { |
| 206 | j = nullptr; |
| 207 | n_threads--; |
| 208 | e.signal(); |
| 209 | } |
| 210 | m.release(); |
| 211 | return j; |
| 212 | } |
| 213 | |
| 214 | template<class Jobs, class RetType> |
| 215 | forceinline void |