实验二 读写者

writer.c

#include <stdlib.h>
#include <pthread.h>
#include <unistd.h>
#include <semaphore.h>

#include"Writer.h"
#include"WriterReaderUtilities.h"

void writer_data(WriterReaderManager_t *WriterReaderMgr,int threadIdx){
    sem_t *mutex= &(WreterReaderMgr->mutex);

    int i=0;
    semWait(mutex);
    for(i=0;i<NUMBER_COUNT-1;i++){
        int datacount=rand()%26;
        WriterReaderMgr->buffer[i]=datacount+'a';
    }
    WriterReaderMgr->buffer[i]='\0';
    printf("writer:%d,write the data:%s\n",threadIdx,WriterReaderMgr->buffer);
    semSignal(mutex);
}
void *writerThread(void *arg){
    ThreadStruct_t *curThreadStruct = (ThreadStruct_t *)arg;
    WriterReaderManager_t *WreterReaderMgr=curThreadStruct->WriterReaderMgr;

    srand(curThreadStruct->threadIdx);
    while(curThreadStruct->WreterReaderMgr->exit_flag == 0){
        writer_data(WreterReaderMgr,curThreadStruct->threadIdx);
        sleep(WAIT_TIME_IN_SECOND);
    }
    return arg;
}

第一题makefile

CC=gcc
CFLAGS = -g -Wall -lpthread
OBJS =ProducerConsumerUtilities.o Consumer.o Producer.o mainProg.o
TARGET = mainProg

$(TARGET): $(OBJS)
    $(CC) -o $(TARGET) $(OBJS) $(CFLAGS)

clean:
    rm -rf *.o $(TARGET)

第二题

CC=gcc
CFLAGS = -g -Wall -lpthread
OBJS =ProducerWriterUtilities.o Writer.o Reader.o mainProg.o
TARGET = mainProg

$(TARGET): $(OBJS)
    $(CC) -o $(TARGET) $(OBJS) $(CFLAGS)

clean:
    rm -rf *.o $(TARGET)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值