VS2010 C++窗体应用程序 多线程问题
stdafx.h:#pragmaonce//TODO:在此处引用程序需要的其他头文件#include"class1.h"#include<process.h>#inclu...
stdafx.h:
#pragma once
// TODO: 在此处引用程序需要的其他头文件
#include "class1.h"
#include <process.h>
#include <stdlib.h>
#include <windows.h>
-------------------------------------------------------------------------------
class1.h:
#pragma once
typedef int semaphore;
/* 其他用到的变量的定义 */
HANDLE mutex;//对缓冲区互斥的锁
unsigned create_pthread_producer();//添加生产者线程
-------------------------------------------------------------------------------
class1.cpp
#include "StdAfx.h"
#include "class1.h"
void create_pthread_producer()//添加生产者线程
{
HANDLE phThreads;
phThreads = CreateThread( NULL, 0, producer, NULL, 0, NULL);
}
DWORD WINAPI producer(LPVOID lpParameter)//生产者函数
{
//生产东西到缓冲区中
do{
buffer[in] = (rand() % 98) + 1;//1-99随机数
in = (in + PRODUCER_TIME) % 20;
}while(1);
}
-------------------------------------------------------------------------------
出现错误:
error C2146: 语法错误: 缺少“;”(在标识符“mutex”的前面)
困扰一天了,求大神帮帮忙,_(:зゝ∠)_
win窗体点击按钮事件执行create_pthread_producer()
mutex是想在producer中使用的,但是定义都报错 展开
#pragma once
// TODO: 在此处引用程序需要的其他头文件
#include "class1.h"
#include <process.h>
#include <stdlib.h>
#include <windows.h>
-------------------------------------------------------------------------------
class1.h:
#pragma once
typedef int semaphore;
/* 其他用到的变量的定义 */
HANDLE mutex;//对缓冲区互斥的锁
unsigned create_pthread_producer();//添加生产者线程
-------------------------------------------------------------------------------
class1.cpp
#include "StdAfx.h"
#include "class1.h"
void create_pthread_producer()//添加生产者线程
{
HANDLE phThreads;
phThreads = CreateThread( NULL, 0, producer, NULL, 0, NULL);
}
DWORD WINAPI producer(LPVOID lpParameter)//生产者函数
{
//生产东西到缓冲区中
do{
buffer[in] = (rand() % 98) + 1;//1-99随机数
in = (in + PRODUCER_TIME) % 20;
}while(1);
}
-------------------------------------------------------------------------------
出现错误:
error C2146: 语法错误: 缺少“;”(在标识符“mutex”的前面)
困扰一天了,求大神帮帮忙,_(:зゝ∠)_
win窗体点击按钮事件执行create_pthread_producer()
mutex是想在producer中使用的,但是定义都报错 展开
1个回答
2016-06-30
展开全部
一般这种问题,是因为你没有包含定义HANDLE的头文件。但是看你包含了windows.h是不会出现这问题的,不过还是建议你在class1.h里面包含windows.h试试。
追问
我在class1.h里加了windows.h后,这个问题是没了,但是出现了新的问题:
...
1>stdafx.obj : error LNK2005: "int out" (?out@@3HA) 已经在 class1.obj 中定义 class1.obj
...(同样的其他错误提示)
说我变量重定义了?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询