int main( int argc, char* argv[] ) { int thread_id[NO_OF_THREADS_TO_CREATE]; int status; int i; test_name = "multi-tid"; msg ("begin"); for( i = 0; i < NO_OF_THREADS_TO_CREATE; ++i ) { thread_id[i] = uthread_create( child_thread, &thread_id[i] ); if( -1 == thread_id ) { fail( "Test creation failed. Test fail" ); } } for( i = 1; i < NO_OF_THREADS_TO_CREATE; ++i ) { if( thread_id[i] != thread_id[i-1] + 1 ) { fail( "TID's should be consecutive" ); } } uthread_joinall(); msg( "end" ); return 0; }
/* * Create N threads which spawn M threads (default 1x1) */ int main(int argc, char *argv[]) { int n, m; int rc; void *prev_tid = NULL, *last_tid = NULL; if (argc < 3) n = m = 1; else { n = atoi(argv[1]); m = atoi(argv[2]); } for (int i = 0; i < n; ++i) { last_tid = uthread_create(def_attrs, fun_with_threads, &m); if (last_tid) { printf("created thread: %p\n", last_tid); prev_tid = last_tid; } else { printf("out of memory, exiting\n"); break; } } rc = uthread_joinall(); printf("join returned: %d\n", rc); return EXIT_SUCCESS; }
int main(int argc, char *argv[]) { int fd, rv; void *last_tid; char buf[4096]; printf("main tid: %p\n", uthread_gettid()); struct uthread_attr a = UT_DEF_ATTR; for (int i = 5; i > 0; --i) { last_tid = uthread_create(a, fun_with_threads, &i); printf("queued thread: %p\n", last_tid); } fd = open(argv[1], O_RDONLY); rv = async_read(fd, buf, 4096); printf("async_read (%d): %s\n", rv, buf); rv = uthread_joinall(); printf("join returned: %d\n", rv); return EXIT_SUCCESS; }