现在的位置: 首页 > 综合 > 正文

类成员函数中生成多线程函数,多线程入口函数同为类成员函数,解决方案。 createThread

2014年10月08日 ⁄ 综合 ⁄ 共 1137字 ⁄ 字号 评论关闭

---------------------------问题描述--------------------------------------

(1)在类DF的函数ControlDF()中开启多个线程;

(2)线程函数的需要调用本类中的函数 void DF::DFthreadFunc(int a, int b, int c);

(3)线程函数需要传递到实际工作函数的参数a,b,c是在ControlDF()函数中赋值。

设计:两个多线程入口函数:ThreadProc0,ThreadProc1

HANDLE CreateThread (

LPSECURITY_ATTRIBUTESlpThreadAttributes,//线程安全属性
DWORDdwStackSize,//堆栈大小
LPTHREAD_START_ROUTINElpStartAddress,//线程函数
LPVOIDlpParameter,//线程参数
DWORDdwCreationFlags,//线程创建属性
LPDWORDlpThreadId//线程ID
)
 
LPTHREAD_START_ROUTINElpStartAddress 要求是静态成员函数。
也就是说,

 DWORD WINAPI Threadroc0 (LPVOID lpParameter)

{

   HVC_DeblockingFilter *lp = ( HVC_DeblockingFilter *) lpParameter

   lp->DFthreadFunc(a, b, c);

}

void DF::ControlDF()

{

......

int a=1;

int b = 2;

int c = 3;

hThreadDF[0] = CreateThread (NULL, 0, ThreadProc0, this, 0, NULL);  //  ThreadProc0需要是静态成员函数

hThreadDF[1] = CreateThread (NULL, 0, ThreadProc1, this, 0, NULL);  //  ThreadProc1需要是静态成员函数

......

}

 

但是,由于 ThreadProc0

 

----------------------------end of 问题描述---------------------------

 

class DF

{

void ControlDF ();

void xDFLcu ();

 

}

 

HANDLE hThreadDF[2];

 

void DF::ControlDF()

{

......

hThreadDF[0] = CreateThread (NULL, 0, ThreadProc0, this, 0, NULL);

hThreadDF[1] = CreateThread (NULL, 0, ThreadProc1, this, 0, NULL);

......

 

}

抱歉!评论已关闭.