C pthread計數同步

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

int counter = 0;
int count = 3000000;
//初始化一個mutex
pthread_mutex_t lock = PTHREAD_MUTEX_INITIALIZER;

void * thread(void* arg){
    int i = 0;
    for(; i < count; i++){
        //對共享變量操做時, 先加鎖.
        pthread_mutex_lock(&lock);
        counter++;
        //對共享變量操做後,釋放鎖.
        pthread_mutex_unlock(&lock);
    }
}

int main(void){

    pthread_t tidA, tidB;
    //建立線程A
    //int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine) (void *), void *arg);
    int retA = pthread_create(&tidA, NULL, thread, NULL);
    if(!retA){
        perror("pthread_create");
    }
    //建立線程B
    int retB   = pthread_create(&tidB, NULL, thread, NULL);
    if(!retB){
        perror("pthread_create");
    }
    //等待線程A和B運行完
    pthread_join(tidA, NULL);
    pthread_join(tidB, NULL);

    printf("counter:%d\n", counter);

    return  EXIT_SUCCESS;
}
相關文章
相關標籤/搜索