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)
    {
    ...
    }

    评论

报告相同问题?

悬赏问题

  • ¥50 汇编语言除法溢出问题
  • ¥65 C++实现删除N个数据列表共有的元素
  • ¥15 Visual Studio问题
  • ¥15 state显示变量是字符串形式,但是仍然红色,无法引用,并显示类型不匹配
  • ¥20 求一个html代码,有偿
  • ¥100 关于使用MATLAB中copularnd函数的问题
  • ¥20 在虚拟机的pycharm上
  • ¥15 jupyterthemes 设置完毕后没有效果
  • ¥15 matlab图像高斯低通滤波
  • ¥15 针对曲面部件的制孔路径规划,大家有什么思路吗