c线程使用锁控制并发

Posted luckygxf

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c线程使用锁控制并发相关的知识,希望对你有一定的参考价值。

//
// Created by gxf on 2019/12/16.
//
#include <stdlib.h>
#include <stdio.h>
#include <pthread.h>

void increase_num();

int sharedi=0;

pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;

int main(){
    pthread_t t1, t2, t3;
    pthread_create(&t1, NULL,increase_num, NULL);
    pthread_create(&t2, NULL,increase_num, NULL);
    pthread_create(&t3, NULL,increase_num, NULL);

    pthread_join(t1, NULL);
    pthread_join(t2, NULL);
    pthread_join(t3, NULL);

    printf("shared:%d
", sharedi);
    return 0;
}

void increase_num(){
    for (int i = 0; i < 100000; i++){
        if (pthread_mutex_lock(&mutex) != 0) {
            perror("mutex lock fail");
            exit(EXIT_FAILURE);
        }
        long temp = sharedi;
        temp += 1;
        sharedi = temp;
        if (pthread_mutex_unlock(&mutex)) {
            perror("mutex unlock fail");
            exit(EXIT_FAILURE);
        }
    }
}

 

以上是关于c线程使用锁控制并发的主要内容,如果未能解决你的问题,请参考以下文章

java并发线程锁技术的使用

C语言之简单使用互斥锁实现并发控制操作

C语言之简单使用互斥锁实现并发控制操作

JUC并发编程 共享模式之工具 JUC CountdownLatch(倒计时锁) -- CountdownLatch应用(等待多个线程准备完毕( 可以覆盖上次的打印内)等待多个远程调用结束)(代码片段

64.基于全局锁实现悲观锁并发控制

MySQL系列:kafka停止命令