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 fluent无法启动
  • ¥15 孟德尔随机化r语言运行问题
  • ¥15 pyinstaller编译的时候出现No module named 'imp'
  • ¥15 nirs_kit中打码怎么看(打码文件是csv格式)
  • ¥15 怎么把多于硬盘空间放到根目录下
  • ¥15 Matlab问题解答有两个问题
  • ¥15 LCD12864中文显示
  • ¥15 在使用CH341SER.EXE时不小心把所有驱动文件删除了怎么解决
  • ¥15 gsoap生成onvif框架
  • ¥15 有关sql server business intellige安装,包括SSDT、SSMS。