Method: Polyphony::Queue#flush_waiters

Defined in:
ext/polyphony/queue.c

#flush_waiters(value) ⇒ Queue

Flushes all fibers currently blocked waiting to remove items from the queue, resuming them with the given value.

Parameters:

  • value (any)

    value to resome all waiting fibers with

Returns:



353
354
355
356
357
358
359
360
361
362
363
364
365
# File 'ext/polyphony/queue.c', line 353

VALUE Queue_flush_waiters(VALUE self, VALUE value) {
  Queue_t *queue;
  GetQueue(self, queue);

  while(1) {
    VALUE fiber = ring_buffer_shift(&queue->shift_queue);
    if (fiber == Qnil) return self;

    Fiber_make_runnable(fiber, value);
  }

  return self;
}