NAME

Async::Trampoline::Scheduler - decide which thunk should be evaluated next

DESCRIPTION

This is an internal module. The interface may change at any time.

new

$scheduler = Async::Trampoline::Scheduler->new

Create a new scheduler.

enqueue

$scheduler->enqueue($task)

$scheduler->enqueue($task => @blocked)

Add a $task to the runnable queue.

$task: A task to be scheduled at some point in the future.

@blocked: Any number of tasks that depend on the $task. The blocked tasks will be added to the runnable queue once the $task is completed.

dequeue

($task) = $scheduler->dequeue
()      = $scheduler->dequeue

Get the next scheduled $task.

returns: A $task if there is a runnable task. An empty list if no tasks are runnable.

complete

$scheduler->complete($task)

Mark a $task as completed.

This may move further tasks to the runnable state.

$task: A task that was completed.