class Async::Scheduler

def initialize(parent = nil, selector: nil, profiler: Profiler&.default, worker_pool: WORKER_POOL)

@parameter selector [IO::Event::Selector] The selector to use for event handling.
@parameter parent [Node | Nil] The parent node to use for task hierarchy.
@public Since *Async v1*.

Create a new scheduler.
def initialize(parent = nil, selector: nil, profiler: Profiler&.default, worker_pool: WORKER_POOL)
	super(parent)
	
	@selector = selector || ::IO::Event::Selector.new(Fiber.current)
	@profiler = profiler
	
	@interrupted = false
	
	@blocked = 0
	
	@busy_time = 0.0
	@idle_time = 0.0
	
	@timers = ::IO::Event::Timers.new
	
	if worker_pool == true
		@worker_pool = WorkerPool&.new
	else
		@worker_pool = worker_pool
	end
	if @worker_pool
		self.singleton_class.prepend(BlockingOperationWait)
	end
end