在C++ 中
我定义了一个Manger 和 Worker 类
在Manager 中创建多个Worker 对象, Worker对象初始化过程中创建一个线程.
我希望每个Worker 对象线程运行代码是一样的, 既 线程的代码的是Worker 类的一个成员函数,
以下是我在Worker 创建线程的一行代码
m_hPrinterEventThread = CreateThread(NULL, NULL,this->PrinterEventThread, this, NULL, 0);
其中PrinterEventThread 是Workerd的成员函数, 定义为: DWORD WINAPI PrinterEventThread(LPVOID lpVoid);
但编译通不过, 提示下列错误
error C2664: 'CreateThread' : cannot convert parameter 3 from 'DWORD (LPVOID)' to 'LPTHREAD_START_ROUTINE'
除非我把PrinterEventThread 定义为: static DWORD WINAPI PrinterEventThread(LPVOID lpVoid);
编译才能通过. 但如果这样做就意味着几个Worker 线程函数入口地址是一样, 到时会造成某一个线程的数据被另一线程所更改.
在C# 中不存在这样的问题, 所以我想VC++ 也应该有办法做到.
如果哪位知道怎么做请回应.
谢谢
我定义了一个Manger 和 Worker 类
在Manager 中创建多个Worker 对象, Worker对象初始化过程中创建一个线程.
我希望每个Worker 对象线程运行代码是一样的, 既 线程的代码的是Worker 类的一个成员函数,
以下是我在Worker 创建线程的一行代码
m_hPrinterEventThread = CreateThread(NULL, NULL,this->PrinterEventThread, this, NULL, 0);
其中PrinterEventThread 是Workerd的成员函数, 定义为: DWORD WINAPI PrinterEventThread(LPVOID lpVoid);
但编译通不过, 提示下列错误
error C2664: 'CreateThread' : cannot convert parameter 3 from 'DWORD (LPVOID)' to 'LPTHREAD_START_ROUTINE'
除非我把PrinterEventThread 定义为: static DWORD WINAPI PrinterEventThread(LPVOID lpVoid);
编译才能通过. 但如果这样做就意味着几个Worker 线程函数入口地址是一样, 到时会造成某一个线程的数据被另一线程所更改.
在C# 中不存在这样的问题, 所以我想VC++ 也应该有办法做到.
如果哪位知道怎么做请回应.
谢谢