public void Dispose() { if (disposed) { return; } Queues.ForEach(Kill); FinishedProcesses.ForEach(Kill); FibersMap.Clear(); disposed = true; }
public void Switch(bool fiberFinished) { if (fiberFinished) { if (CurrentlyExecutingProcess == null) { throw new InvalidOperationException("Attempted to finish nonexistent process"); } FinishedProcesses.Add(CurrentlyExecutingProcess); LaunchNextFiber(); } else { if (CurrentlyExecutingProcess != null) { Queues[CurrentlyExecutingProcess.Priority].Enqueue(CurrentlyExecutingProcess); Info("Process enqueued"); } LaunchNextFiber(); } }