yuexia_wrp 2014-10-25 08:28 采纳率: 0%
浏览 1931

利用互斥对象实现线程同步,并且将线程设计成一个类,但是报错了,作业。。。

源代码:
#include
#include
#include

using namespace std;

int tickets=100;
HANDLE hMutex;

class MyThread
{
private:
char name;
HANDLE hThread;
public:

MyThread(char name2)
{
    name=name2;
    hThread=CreateThread(NULL,0,FunProc,NULL,0,NULL);
}

DWORD WINAPI FunProc(LPVOID lpParameter)
{
  while (true)
  {
  WaitForSingleObject(hMutex,INFINITE);
  if (tickets>0)
  {
  printf("%c:%d",name,tickets);
  tickets=tickets-1;
  }
  else
  {
  break;
  }
  ReleaseMutex(hMutex);
  }
  return 0;
 }

~MyThread()
{
CloseHandle(hThread);
}
};

void main(){
char x,y,z;
hMutex=(HANDLE)CreateMutex(NULL,FALSE,NULL);
MyThread thread_x(x);
MyThread thread_y(y);
MyThread thread_z(z);
Sleep(5000);
}

报错是这样的:
error C3867: “MyThread::FunProc”: 函数调用缺少参数列表;请使用“&MyThread::FunProc”创建指向成员的指针

  • 写回答

2条回答

  • Eleven 2014-11-05 06:34
    关注

    DWORD WINAPI FunProc(LPVOID lpParameter)的前面加上static,如下所示:

    static DWORD WINAPI FunProc(LPVOID lpParameter)
    {
    ...
    }

    评论

报告相同问题?

悬赏问题

  • ¥20 双层网络上信息-疾病传播
  • ¥50 paddlepaddle pinn
  • ¥20 idea运行测试代码报错问题
  • ¥15 网络监控:网络故障告警通知
  • ¥15 django项目运行报编码错误
  • ¥15 请问这个是什么意思?
  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services
  • ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏
  • ¥15 模糊pid与pid仿真结果几乎一样