c语言include iostream,求助,虚拟机上#include<iostream>一直报错

本文档详细探讨了一个C++程序员在设计父子女儿线程间水果取放程序时遇到的#include报错问题。通过创建信号量和线程函数,作者展示了如何使用CreateSemaphore函数来协调资源访问,但关键代码部分可能存在遗漏或语法问题。读者可以借此了解线程同步与进程间通信的实践应用。
摘要由CSDN通过智能技术生成

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

在一虚拟机上写《父亲儿子女儿放取水果进程/线程间通信程序设计与实现》,但#include一直报错

f90316edd7c6fca06a10a552b927a7a5.png

代码如下

#include

#include

using namespace std;

HANDLE g_apple = 0;//女儿线程互斥:表示可否取苹果

HANDLE g_orange = 0;//儿子线程互斥:表示可否取桔子

HANDLE g_hMutex = 0; //父亲线程互斥:表示可否向盘中放水果

bool g_continue = true; //控制程序运行和结束

DWORD WINAPI Father(LPVOID); //父亲线程

DWORD WINAPI Son(LPVOID);//儿子线程

DWORD WINAPI Daughter(LPVOID);//女儿线程

int main()

{

//创建各个信号量

g_orange = CreateSemaphore(NULL, 0, 1, NULL);

g_apple = CreateSemaphore(NULL, 0, 1, NULL);

g_hMutex = CreateSemaphore(NULL, 1, 1, NULL);

DWORD threadID[3];

HANDLE hThreads[3];

//创建父亲线程

hThreads[0] = CreateThread(NULL, 0, Father, NULL, 0, &threadID[0]);

if (hThreads == NULL) return -1;

//创建儿子线程

hThreads[1] = CreateThread(NULL, 0, Son, NULL, 0, &threadID[1]);

if (hThreads == NULL) return -1;

//创建女儿线程

hThreads[2] = CreateThread(NULL, 0, Daughter, NULL, 0, &threadID[2]);

if (hThreads == NULL) return -1;

while (g_continue){

if (getchar()){ //按回车后终止程序运行

g_continue = false;

}

}

return 0;

}

//父亲线程

DWORD WINAPI Father(LPVOID lpPara)

{

while (g_continue){

WaitForSingleObject(g_hMutex, INFINITE);

int m = rand() % 2;

if (m == 1) {

std::cerr << "父亲放入一个苹果!" << std::endl;

Sleep(1500);

ReleaseSemaphore(g_apple, 1, NULL);

}

else{

std::cerr << "父亲放入一个桔子!" << std::endl;

Sleep(1500);

ReleaseSemaphore(g_orange, 1, NULL);

}

}

return 0;

}

//女儿线程

DWORD WINAPI Daughter(LPVOID lpPara)

{

while (g_continue){

WaitForSingleObject(g_apple, INFINITE);

std::cerr << "女儿吃到一个苹果!" << std::endl;

Sleep(1500);

ReleaseSemaphore(g_hMutex, 1, NULL);

}

return 0;

}

//儿子线程

DWORD WINAPI Son(LPVOID lpPara)

{

while (g_continue){

WaitForSingleObject(g_orange, INFINITE);

std::cerr << "儿子吃到一个桔子!" << std::endl;

Sleep(1500);

ReleaseSemaphore(g_hMutex, 1, NULL);

}

return 0;

}

这是哪里出了问题?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值