#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; }