#include #include int counter = 0; pthread_mutex_t lock = PTHREAD_MUTEX_INITIALIZER; void *increment_counter(void *arg) { pthread_mutex_lock(&lock); ++counter; printf("Thread %lu Counter value: %d\n", (unsigned long)pthread_self(), counter); pthread_mutex_unlock(&lock); return NULL; } int main() { pthread_t thread1, thread2; if (pthread_create(&thread1, NULL, increment_counter, NULL) != 0) { fprintf(stderr,"Creating first thread failed!"); return -1; } if (pthread_create(&thread2, NULL, increment_counter, NULL) != 0) { fprintf(stderr,"Creating second thread failed!"); return -1; } pthread_join(thread1, NULL); pthread_join(thread2, NULL); return 0; }