NAME
src/pmc/scheduler.pmc - The concurrency scheduler
DESCRIPTION
Implements the core concurrency scheduler.
Vtable Functions
- void init()Initializes a concurrency scheduler object.
- void init_pmc(PMC *data)Initializes a new Scheduler with a
- idAn
- void push_pmc(PMC *value)Inserts a task into the task list,
giving it a task ID one higher than the current maximum,
and a birthtime of the current time.
- PMC *pop_pmc()Retrieves the next task from the task list.
If the task index is invalid,
recalculates it before retrieving the next task.
- INTVAL get_integer()Retrieves the number of pending tasks in the scheduler's task list.
- void delete_keyed_int(INTVAL key)Removes the task with the given task ID from the task list.
- PMC *share_ro()Sets this PMC as shared.
- void destroy()Frees the scheduler's underlying struct.
- void mark()Marks any referenced strings and PMCs as live.
- void visit(PMC *info)Visits the contents of the scheduler (used by freeze/thaw).
- void freeze(PMC *info)Archives the scheduler.
- void thaw(PMC *info)Unarchives the scheduler.
- void thawfinish(PMC *info)Finishes thawing the scheduler.
Hash PMC with any or all of the keys:
Integer representing the unique identifier for this scheduler.*info is the visit info (see include/parrot/pmc_freeze.h).
Methods
- METHOD add_handler(PMC *handler)Adds a handler to the scheduler.
- METHOD delete_handler(STRING *type :optional, INTVAL have_type :opt_flag)Deletes a handler from the scheduler.
- METHOD find_handler(PMC *task)Searchs for a handler for the given task.
If no handler is found,
returns PMCNULL.
- METHOD count_handlers(STRING *type :optional, INTVAL have_type :opt_flag)Returns the number of handlers currently held by the scheduler.
If a type argument is passed,
only counts handlers of that type (
event,
exception).
If no type argument is passed,
counts all handlers.