/* * simplethreads.c * * Created on: Sep 24, 2018 * Author: cs3841 */ #include #include #include #include #include #include void* thread1_main(void*); static long count = 0; static bool is_locked = false; static int whose_turn = 1; int main(int argc, char* argv[]) { void * arg = NULL; pthread_t thread1; pthread_attr_t * attr = NULL; pthread_create(&thread1, attr, &thread1_main, arg); for(int i = 0; i < 10; i++){ printf("In main thread: %d\n",i); for(int j = 0; j < 10000000; j++) { // Thread 1 while(whose_turn == 2) { /* do nothing */ } whose_turn = 1; // begin critical section count++; // end critical section whose_turn = 2; } } pthread_join(thread1, NULL); printf("count: %d\n",count); printf("success\n"); return 0; } void* thread1_main(void * arg) { printf("Here we are!\n"); for(int i = 0; i < 10; i++){ printf("In thread1: %d\n",i); for(int j = 0; j < 10000000; j++) { // Thread 2 while(whose_turn == 1) { /* do nothing */ } whose_turn = 2; // begin critical section count++; // end critical section whose_turn = 1; } } return NULL; }