线程同步(两个线程同步 加锁)

这篇博客通过一个C语言示例展示了如何使用信号量和互斥锁进行线程同步。程序创建了两个线程,一个生产者线程负责增加全局变量value,另一个消费者线程负责读取并增加该变量。在每次操作全局变量时,都会通过加锁和解锁确保线程安全。在Linux环境下,程序运行正常,展示了线程同步的效果。
摘要由CSDN通过智能技术生成

 两个线程同步 加锁

#include <stdio.h>
#include <string.h>
#include <pthread.h>
#include <errno.h>
#include <semaphore.h>
#define BUFSIZE 4
#define NUMBER 8

int sum_of_number=0;
int value=0; //全局变量, 要注意加锁


/*定义两个变量 信号量*/
sem_t write_res_number;
sem_t read_res_number;

 

/* 初始化锁 ¯*/
pthread_mutex_t buffer_mutex=PTHREAD_MUTEX_INITIALIZER;

static void *producer(void * arg)
{
    int i;
   
    for(i=0;i<=12;i++)
    {
        /* 减少可写的资源数*/
        sem_wait(&write_res_number);
       
        /* 加锁 */
        pthread_mutex_lock(&buffer_mutex);
            
        value+=1;
        printf("procuder write: %d/n",value);
       
        /* 解锁 */
        pthread_mutex_unlock(&buffe

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值