• 大小: 3KB
    文件类型: .cpp
    金币: 1
    下载: 0 次
    发布日期: 2021-05-16
  • 语言: C/C++
  • 标签: linux  进程  线程  

资源简介

参考教材中的生产者消费者算法,创建5个进程,其中两个进程为生产者进程,3个进程为消费者进程。一个生产者进程试图不断地在一个缓冲中写入大写字母,另一个生产者进程试图不断地在缓冲中写入小写字母。3个消费者不断地从缓冲中读取一个字符并输出。为了使得程序的输出易于看到结果,仿照的实例程序,分别在生产者和消费者进程的合适的位置加入一些随机睡眠时间。

资源截图

代码片段和文件信息

#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define N 1000
using namespace std;

int buff;
int fulll;
int *full2;
char *buff1;
void plusORde(int numint number){

    full2[num]=full2[num]+number;
}

void down(int *num)
{
    while(true)
    {
        if(*num>0)
        {
            *num=*num-1;
            break;
        }
        sleep(1);
    }
}

void up(int *num)
{
    *num=*num+1;
}

char produce_item_low()
{
    char ch=((rand() +7)% 26+97);
    return ch;
}
char produce_item_lar()
{
    char ch=(rand() % 26+65);
    return ch ;
}


char remove_item()
{


    char ch=buff1[full2[1]-1];
buff1[full2[1]-1]=‘\0‘;
    down(&full2[1]);

    return ch;
}
void printfCharArray(char *chararrayint len){

    printf(“ flag: %d  len: %d \n“full2[4]len);
}
void insert_item(char x)
{
    char xx[2];
    xx[0]=x;
    xx[1]=‘\0‘;
    strcat(buff1xx);

        up(&full2[1]);
}
void consume_item(char item)
{
    printf(“\n remove:%c “item);
    printfCharArray(buff1full2[1]);
}
void producer(int flag)
{
char item;
while (true)
{
           if(full2[4]>200)sleep(

评论

共有 条评论