int main (int argc, char *argv[]) { int rc; npth_attr_t tattr; int state; npth_t tid1, tid2; void *retval; if (argc >= 2 && !strcmp (argv[1], "--verbose")) opt_verbose = 1; rc = npth_init (); fail_if_err (rc); rc = npth_mutex_init (&counter_mutex, NULL); fail_if_err (rc); rc = npth_attr_init (&tattr); fail_if_err (rc); rc = npth_attr_getdetachstate (&tattr, &state); fail_if_err (rc); if ( state != NPTH_CREATE_JOINABLE ) fail_msg ("new tattr is not joinable"); info_msg ("creating thread-one"); rc = npth_create (&tid1, &tattr, thread_one, NULL); fail_if_err (rc); npth_setname_np (tid1, "thread-one"); info_msg ("creating thread-two"); rc = npth_create (&tid2, &tattr, thread_two, NULL); fail_if_err (rc); npth_setname_np (tid2, "thread-two"); rc = npth_attr_destroy (&tattr); fail_if_err (rc); info_msg ("waiting for thread-one to terminate"); rc = npth_join (tid1, &retval); fail_if_err (rc); if (retval != (void*)4711) fail_msg ("thread-one returned an unexpected value"); info_msg ("waiting for thread-two to terminate"); rc = npth_join (tid2, &retval); fail_if_err (rc); if (retval != (void*)4722) fail_msg ("thread-two returned an unexpected value"); if (counter != 100) fail_msg ("counter value not as expected"); return 0; }
int main(int argc, char** argv) { npth_attr_t t_attr1; npth_t thread1; int i; npth_init (); for(i = 0; i < 5; i++) { npth_attr_init(&t_attr1); // N.B.: value i will be always 5 because npth is cooperative, and &i is // stored in the main thread. (all threads created is cooperative) npth_create(&thread1, &t_attr1, (void *)&print, (void *)&i); } npth_exit(0); return 0; }
int main (int argc, char *argv[]) { int rc; npth_mutex_t mutex; rc = npth_init (); fail_if_err (rc); rc = npth_mutex_init (&mutex, NULL); fail_if_err (rc); rc = npth_mutex_lock (&mutex); fail_if_err (rc); rc = npth_mutex_unlock (&mutex); fail_if_err (rc); return 0; }