栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

计算机操作系统的生产者与消费者问题的C代码,无法运行,麻烦各位大佬大神帮我看看有什么错误

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

计算机操作系统的生产者与消费者问题的C代码,无法运行,麻烦各位大佬大神帮我看看有什么错误

#include
#include
#include

bool lock[4] = { false, false, false, false };
int buffer[4] = { 0, 0, 0, 0 };
void display() {
    cout << "--------------------" << endl;
    cout << "缓冲区     0     1     2     3" << endl;
    for (int i = 0; i < 4; i++) { cout << "    " << buffer[i] << "    "; }
    cout << endl;
}
DWORD WINAPI Producer(LPVOID lpParameter) {
    while (true) {
        for (int j = 0; j < 4; j++) {
            if (buffer[j] == 0) {
                if (lock[j] == false) {
                    lock[j] = true;
                    if (buffer[j] < 1) {
                        ++buffer[j];
                        cout << "生产一个资源,放入缓冲区" << j << "中" << endl;
                        lock[j] = false;
                        break;
                    }
                }
                if (j == 3) {
                    cout << "找不到空缓冲区,等待中。。" << endl;
                    Sleep(2000);
                }
            }
        }
    }
    return 0;
}
DWORD WINAPI Customer(LPVOID lpParameter)
{
    while (true) {
        for (int n = 0; n < 4; n++) {
            if (buffer[n] == 1) {
                if (lock[n] == false) {
                    lock[n] = true;
                    if (buffer[n] >= 1) {
                        --buffer[n];
                        cout << "消耗一个资源,从缓冲区" << n << "中取出" << endl;
                        lock[n] = false;
                        break;
                    }
                }
            }
            if (n == 3) {
                cout << "找不到满缓冲区,等待中。。" << endl;
                Sleep(2000);
            }
        }
    }
    return 0;
}

int main(int argc,char*argv[])
{
    display();
    HANDLE handle[3];
    DWORD dw1,dw2,dw3,dw4,dw0;
    handle[0] = Create Thread(NULL, 0, Producer, NULL, 0, &dw1);
    handle[1] = Create Thread(NULL, 0, Producer, NULL, 0, &dw2);
    handle[2] = Create Thread(NULL, 0, Producer, NULL, 0, &dw3);
    handle[3] = Create Thread(NULL, 0, Customer, NULL, 0, &dw4);
    handle[4] = Create Thread(NULL, 0, Customer, NULL, 0, &dw0);
    display();
    Sleep(3000);
    display();
    return 0;
}
 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/346860.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号