in reply to Re^6: Weird syntax. What does this goto statement do? ( 'goto &NAME' use cases)
in thread Weird syntax. What does this goto statement do?

And I can't deal with your C code either, especially as it's far from short.

I never claimed that creating a multi-tasking system would be trivial? 60 lines is pretty short, and I presented it in even smaller sections.

Besides, the point is the following producer-consumer example runs and I only used the principles I said I used:

void *main_thread( void* dummy ) { (void)dummy; // Create the threads. ThreadId thread1_id = create_thread( func1, NULL ); ThreadId thread2_id = create_thread( func2, NULL ); // Wait for them to finish. wait_for_thread( thread1_id ); wait_for_thread( thread2_id ); return NULL; } void *func1( void *dummy ) { (void)dummy; for ( int i=5; i--; ) { printf( "func1\n" ); if ( i ) thread_sleep( 1 ); } return NULL; } void *func2( void *dummy ) { (void)dummy; for ( int i=5; i--; ) { printf( "func2\n" ); if ( i ) thread_sleep( 1 ); } return NULL; }

I disagree, most probably your assumptions are based on some C lang specific conventions including call stack manipulations.

The first line from your link: "Coroutines are computer program components that allow execution to be suspended and resumed".

Suspending and resuming a function requires saving where it's at (execution pointer) and it's state (call stack incl lexicals).

Nothing about C or any other language here. You'll find the same thing in Perl coros (Coro) and everywhere else coros exist.

The first yield-to example with routines translates 1to1

Neither examples can be achieved using goto &sub. goto &sub can't be used to jump into the middle of a sub from outside a sub, much less restore the existing lexical state that existed when that point in the sub was previously reached. And I have no idea what you think would save that state in the first place.