#include #include #include pthread_mutex_t sv_mutex; // Mutex to protect shared_variable int shared_variable = 0; void *thread_work(void *param){ char* id = (char*)param; for(int i = 0; i < 10; i++){ sleep(1); pthread_mutex_lock(&sv_mutex); int old_value = shared_variable; sleep(1); shared_variable = old_value + 10;; printf("thread_%s: Changing shared_variable to %d\n", id, shared_variable); pthread_mutex_unlock(&sv_mutex); } return 0; } int main(){ pthread_t a, b; pthread_mutex_init(&sv_mutex, 0); pthread_create(&a, 0, thread_work, (void*)"a"); pthread_create(&b, 0, thread_work, (void*)"b"); pthread_join(a, 0); printf("thread a finished\n"); pthread_join(b, 0); printf("thread b finished\n"); return 0; }