Function waitAndWork [src]

Prototype

pub fn waitAndWork(pool: *Pool, wait_group: *WaitGroup) void

Parameters

pool: *Poolwait_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; } }