Linux多线程互斥锁

#include <stdio.h>
#include <pthread.h>
#include <unistd.h>

pthread_mutex_t thread_mutex;
int global_val = 0;


void *thread1(void *arg){
    while(1){
        pthread_mutex_lock(&thread_mutex);
        global_val = global_val + 1;
        printf("thread1 global_val = %d\n", global_val);
        global_val = global_val + 1;
        sleep(2);
        printf("thread1 global_val = %d\n", global_val);
        usleep(2);
        pthread_mutex_unlock(&thread_mutex);
    }
    return NULL;
}

void *thread2(void *arg){
    while(1){
        pthread_mutex_lock(&thread_mutex);
        global_val = global_val + 1;
        printf("thread2 global_val = %d\n", global_val);
        sleep(2);
        global_val = global_val + 1;
        printf("thread2 global_val = %d\n", global_val);
        usleep(2);
        pthread_mutex_unlock(&thread_mutex);
    }
    return NULL;
}

int main(void){

    pthread_t thread_id1 = 0, thread_id2 = 0;
    
    pthread_mutex_init(&thread_mutex, NULL);
    pthread_create(&thread_id1, NULL, thread1, NULL);
    pthread_create(&thread_id2, NULL, thread2, NULL);
    
    pthread_join(thread_id1, NULL);
    pthread_join(thread_id2, NULL);
    
    pthread_mutex_destroy(&thread_mutex);
    
    return 0;
}

猜你喜欢

转载自blog.csdn.net/xiezhi123456/article/details/81666885
今日推荐