kphp
kphp copied to clipboard
implement wait queue
General
add buildin functions from runtime realted to wait fork queue
function wait_queue_create (array<future<any> | false> $request_ids = []) ::: future_queue<^1[*][*]>;
function wait_queue_push (future_queue<any> &$queue_id, future<any> | false $request_ids) ::: void;
function wait_queue_empty (future_queue<any> $queue_id) ::: bool;
/** @kphp-extern-func-info interruptible */
function wait_queue_next (future_queue<any> $queue_id, $timeout ::: float = -1.0) ::: future<^1[*]> | false;
The storage for waiting queues is WaitQueueContext
. That class is responsible for queues managing. Class wait_queue_t
contains two queues
: one for forks, second for awaiters.