#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
#include <errno.h>
#define oops(msg) {perror(msg); exit(errno);}
int g_counter = 0;
pthread_mutex_t mutex1 = PTHREAD_MUTEX_INITIALIZER;
void* add_function(){
int i;
for(i = 0; i < 100; i++){
pthread_mutex_lock(&mutex1); //pthread_mutex_lock
g_counter += 2;
pthread_mutex_unlock(&mutex1);
}
}
int main(){
pthread_t thread1, thread2;
if(pthread_create(&thread1, NULL, add_function, NULL))
oops("pthread_create the thread1");
if(pthread_create(&thread2, NULL, add_function, NULL))
oops("pthread_create the thread2");
pthread_join(thread1, NULL);
pthread_join(thread2, NULL);
printf("g_counter = %d\n", g_counter);
return 0;
}pthread2 pthread_mutex_lock
最新推荐文章于 2025-10-17 21:06:18 发布
本文通过一个简单的C语言程序示例介绍了如何使用多线程及互斥锁来实现线程间的同步操作,确保了全局变量在多个线程中被安全地修改。
774

被折叠的 条评论
为什么被折叠?



