// 多线程竞争锁mutex处理并发 #include <stdio.h> #include <pthread.h> #define LOOP 5000000 // 由于目前cpu处理速度过快,请保证这个值够大才会出现最后结果不对情况 int counter = 0; // 计数器 pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; // mutex锁 void *count() { for (int i = 0; i < LOOP; i++) { pthread_mutex_lock(&mutex); int temp = counter; counter = counter + 1; pthread_mutex_unlock(&mutex); } } int main(int argc, char **argv) { pthread_t tidA, tidB; pthread_create(&tidA, NULL, count, NULL); pthread_create(&tidB, NULL, count, NULL); pthread_join(tidA, NULL); pthread_join(tidB, NULL); printf("%d\n", counter); return 0; }
Linux C多线程共享数据并发锁之mutex
最新推荐文章于 2022-03-07 21:45:21 发布