/* g++ thread-join.cpp ../../objs/st/libst.a -g -O0 -o thread-join && ./thread-join */ #include #include #include "../../objs/st/st.h" void* pfn(void* arg) { printf("pid=%d, coroutine is ok\n", ::getpid()); return NULL; } int main(int argc, char** argv) { st_init(); printf("pid=%d, create coroutine #1\n", ::getpid()); st_thread_t thread = st_thread_create(pfn, NULL, 1, 0); st_thread_join(thread, NULL); st_usleep(100 * 1000); printf("pid=%d, create coroutine #2\n", ::getpid()); thread = st_thread_create(pfn, NULL, 1, 0); st_thread_join(thread, NULL); st_usleep(100 * 1000); printf("pid=%d, create coroutine #3\n", ::getpid()); thread = st_thread_create(pfn, NULL, 1, 0); st_thread_join(thread, NULL); printf("done\n"); st_thread_exit(NULL); return 0; }