int main(int argc, char **argv) { printf("Testing sthread_create, impl: %s\n", (sthread_get_impl() == STHREAD_PTHREAD_IMPL) ? "pthread" : "user"); sthread_init(); if (sthread_create(thread1, (void*)1, 10) == NULL) { printf("sthread_create failed\n"); exit(-1); } if (sthread_create(thread2, (void*)1, 10) == NULL) { printf("sthread_create failed\n"); exit(-1); } printf("in main\n"); sthread_sleep(10000); printf("\ntwo threads runqueue active in priority 10\n"); sthread_dump(); sthread_sleep(10000); printf("\ntwo threads runqueue active in priority 10\n"); sthread_dump(); printf("out main\n"); return 0; }
int main(int argc, char **argv) { void *ret; int i; printf("Testing sthreads, impl: %s\n", (sthread_get_impl() == STHREAD_PTHREAD_IMPL) ? "pthread" : "user"); sthread_init(); mon1 = sthread_monitor_init(); mon2 = sthread_monitor_init(); if (sthread_create(thread0, (void*)1, 10) == NULL) { printf("sthread_create failed\n"); exit(-1); } sthread_monitor_enter(mon1); for (i = 0; i < NUMBER; i++){ if ((thr[i] = sthread_create(thread1, (void*)i, 10)) == NULL) { printf("sthread_create failed\n"); exit(-1); } sthread_yield(); } for (i = 0; i < NUMBER; i++){ sthread_monitor_wait(mon1); } printf("in main\n"); sthread_monitor_exit(mon1); sthread_sleep(10000); sthread_monitor_enter(mon2); sthread_monitor_signalall(mon2); sthread_monitor_exit(mon2); for (i = 0; i < NUMBER; i++){ sthread_join(thr[i], &ret); } printf("\nSUCCESS in creating %i threads\n", NUMBER); printf("out main\n"); return 0; }
int main(int argc, char **argv) { int i; printf("Testing sthread_sleep, impl: %s\n", (sthread_get_impl() == STHREAD_PTHREAD_IMPL) ? "pthread" : "user"); sthread_init(); for (i = 1; i <= 15; i++){ sthread_sleep(1000000); printf("elapsed %i secs\n", i); } return 0; }
/* simulated disk block routines * simulate out of order completion by the disk * by sleeping for up to 100us */ void dblockread(char *block, int blocknum) { memcpy(block, blockData[blocknum], BLOCKSIZE); sthread_sleep(0, rand() % 100000); }