Function waitAndWork [src]
Prototype
pub fn waitAndWork(pool: *Pool, wait_group: *WaitGroup) void
Parameters
pool: *Pool
wait_group: *WaitGroup
Source
pub fn waitAndWork(pool: *Pool, wait_group: *WaitGroup) void {
var id: ?usize = null;
while (!wait_group.isDone()) {
pool.mutex.lock();
if (pool.run_queue.popFirst()) |run_node| {
id = id orelse pool.ids.getIndex(std.Thread.getCurrentId());
pool.mutex.unlock();
run_node.data.runFn(&run_node.data, id);
continue;
}
pool.mutex.unlock();
wait_group.wait();
return;
}
}