public static slotResume ( |
||
target | ||
locals | ||
message | ||
return |
static void Main() { // Test Fibers IoCoroutine[] coros = new IoCoroutine[1]; for (int i = 0; i < coros.Length; i++) { coros[i] = IoCoroutine.createObject(IoCLI.state); coros[i].fiber = new Fiber(); coros[i].fiber.currentCoro = coros[i]; coros[i].fiber.uniqueId = i; coros[i].fiber.currentRoutine = IoCLI.Recurse2(coros[i]); IoCLI.yieldingCoros.Add(coros[i]); } for (int j = 0; j < 5; j++) { foreach (IoCoroutine f in coros) { IoCoroutine.slotResume(f, null, null); } } IoCLI.state.prompt(IoCLI.state); }
static void Main() { // Test Fibers for (int i = 0; i < 400; i++) { IoCoroutine coro = IoCoroutine.createObject(IoCLI.state); coro.fiber = new Fiber(); coro.fiber.currentCoro = coro; coro.fiber.uniqueId = coro.uniqueId; coro.fiber.currentRoutine = new FiberProc(IoCLI.Recurse2 /*(coro)*/); if (coro.fiber.State == 4) { Console.WriteLine("Creation Error. Fiber Exceeds on " + i); break; } IoCLI.yieldingCoros.Add(coro); if (IoCLI.coro == null) { IoCLI.coro = coro; } } while (true) { ArrayList al = new ArrayList(); foreach (IoCoroutine coro in IoCLI.yieldingCoros) { if (coro != null) { al.Add(coro); } } if (al.Count == 0) { break; } foreach (IoCoroutine coro in al) { if (coro != null) { IoCoroutine.slotResume(coro, null, null); } } } IoCLI.state.prompt(IoCLI.state); }
public void rawReturnToParent() { IoCoroutine parentCoro = rawParentCoroutine() as IoCoroutine; if (parentCoro != null && parentCoro.name.Equals("Coroutine")) { IoCoroutine.slotResume(parentCoro, null, null); } else { if (this == this.tag.state.mainCoroutine) { Console.WriteLine("IoCoroutine error: attempt to return from main coro"); } } }