void* thread_func_1() { var loop = new MainLoop(); async_func_1(); loop.run(); return null; } void* thread_func_2() { var loop = new MainLoop(); async_func_2(); loop.run(); return null; } async void async_func_1() { while ( true ) { message( "thread %d", (int)Linux.gettid() ); Timeout.add_seconds( 1, async_func_1.callback ); yield; } } async void async_func_2() { while ( true ) { message( "thread %d", (int)Linux.gettid() ); Timeout.add_seconds( 1, async_func_2.callback ); yield; } } void main() { Thread.create( thread_func_1, false ); Thread.create( thread_func_2, false ); while ( true ) { message( "main thread %d", (int)Linux.gettid() ); Thread.usleep( 1000 * 1000 * 2 ); } }