#include #include #include #define BIG1 100000000 #define BIG2 10000000 // obiect care reprezinta un mutex pthread_mutex_t mutex; // functia pe care thread-urile nou create o vor executa void* thread_func(void* arg) { int i = BIG1; printf("thread [%ld] : function enter\n", (long)arg); //pthread_mutex_lock(&mutex); printf("thread [%ld] : work starting\n", (long)arg); while (i--) if (i % BIG2 == 0) printf("thread [%ld] : reached %d\n", (long)arg, i); printf("thread [%ld] : work done\n", (long)arg); //pthread_mutex_unlock(&mutex); return NULL; } int main() { // obiecte care reprezinta threaduri pthread_t thread1; pthread_t thread2; // initializare mutex pthread_mutex_init(&mutex, NULL); // initializare threaduri pthread_create(&thread1, NULL, thread_func, (void*)1); pthread_create(&thread2, NULL, thread_func, (void*)2); // threadul principal asteapta terminarea threadurile create pthread_join(thread1, NULL); pthread_join(thread2, NULL); // distrugere threaduri pthread_mutex_destroy(&mutex); return 0; }