private void Scheduler(object data)
        {
            // schedule root task
            FiberTask rootTask = (FiberTask)data;

            _scheduler = this;

            _schedulerFiberId = FiberUnmanaged.ConvertThreadToFiber(0);

            rootTask.Start();
            SwitchTask();

            // exit
            FiberUnmanaged.ConvertFiberToThread();
        }