Coroutines in C

June 22, 2005

Coroutines in C are an interesting design concept that allows you to basically leave a function and go back to the same place you left off at the next time you call the function. The end result, for example, is a mesh of functions that get and put data. It's basically the same as using a static function variable and a switch statement, but with all that abstracted for the most part with macros.

Anyhow, the examples expose some not often used switch statements including a loop that spans case statements.

switch (count % 8) {
        case 0:        do {  *to = *from++;
        case 7:              *to = *from++;
        case 6:              *to = *from++;
        case 5:              *to = *from++;
        case 4:              *to = *from++;
        case 3:              *to = *from++;
        case 2:              *to = *from++;
        case 1:              *to = *from++;
                       } while ((count -= 8) > 0);
    }

Related Posts