c使用mutex同步
Posted luckygxf
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c使用mutex同步相关的知识,希望对你有一定的参考价值。
#include <stdio.h> #include <unistd.h> #include <pthread.h> void increase(); int sum = 0; pthread_mutex_t mutex; int main() { // init mutex pthread_mutex_init(&mutex, NULL); pthread_t threads[4]; for (int i = 0; i < sizeof(threads) / sizeof(threads[0]); i++) { pthread_create(&threads[i], NULL, increase, NULL); } for (int i = 0; i < sizeof(threads) / sizeof(threads[0]); i++) { void *joinstatus; int res = pthread_join(threads[i], &joinstatus); printf("res:%d ", res); if (res) { // fprintf(stderr, "pthread_join fail"); perror("pthread_join fail"); } } // sleep(2); pthread_mutex_destroy(&mutex); printf("sum:%d ", sum); return 0; } void increase() { for (int i = 0; i < 10000; i++) { pthread_mutex_lock(&mutex); sum++; pthread_mutex_unlock(&mutex); } printf("t_id:%u ", pthread_self()); }
pthread_joint开始传的&thread,指针类型,编译和运行都没有报错,函数返回3。改成pthread_t类型的可以了
以上是关于c使用mutex同步的主要内容,如果未能解决你的问题,请参考以下文章