public static Coroutine2 <TResult> Start <TResult, TParam>(Coroutine2.CoroutineDelegate <TResult, TParam> coroutine, TParam param) { var coResult = new CoroutineResult <TResult>(); var enumtor = coroutine(coResult, param); var co = new Coroutine2 <TResult>(enumtor, coResult); var runner = Get(); lock (runner._coroutines) { runner._coroutines.AddLast(co); } return(co); }
public static Coroutine2 Start(IEnumerator enumtor) { var co = new Coroutine2(enumtor, null); var runner = Get(); lock (runner._waitQueue) { runner._waitQueue.Enqueue(co); } //lock (_coroutines) //{ // _coroutines.AddLast(co); //} return(co); }