[Mono-devel-list] Coroutines

Joe Ante joe at otee.dk
Tue Sep 21 14:32:53 EDT 2004

Hi Miguel and Rafael,

> I agree with Miguel, that you don't need specific CoRoutines support,
> just use the Thread class.
> Your code could be transformed in
> void Update ()
> {
>      Console.WriteLine ("Starting up");
>      System.Threading.Thread.Sleep(20000); // every other thread will
> continue to execute
>      Console.WriteLine ("20 seconds later");
> }
I am looking for something less heavyweight than threads.

The game code i am running needs to run synchronously. Also the WaitFor
function was an example and there might be several other Yielding function's
eg. WaitForAnimationToFinish

I guess i could do something like create a seperate thread for every update
function which might contain a yield statement. Something like this.

Create Update Function Thread
Suspend MainThread
Run Update Function Thread

void Update ()
    WaitFor (20.F)
            Store info about this thread and when to  continue the thread
            Suspend Update function thread
            Run MainThread

Some time later from inside the MainThread when 20 seconds have passed or an
animation finished playing call:

Suspend MainThread
Run UpdateThread (This would then finish the update function)
Run MainThread

You are right that it's simplest to implement but i don't think it's gonna
cut it performance wise.

I really want to start working a bit on coroutines. I'd really appreciate if
you can give me some hints, starters, help.

Joachim Ante

More information about the Mono-devel-list mailing list