我已经使用CreateThread()成功创建了一个线程。
现在我想创建'n'个线程,但每个线程都有不同的ThreadProc()。
我尝试过以下代码但是使用它,'n'创建的线程数都执行相同的任务(因为所有线程的Threadproc()函数都是相同的。)
//Start the threads
for (int i=1; i<= max_number; i++)
{
CreateThread( NULL, //Choose default security
0, //Default stack size
(LPTHREAD_START_ROUTINE)&ThreadProc,
//Routine to execute. I want this routine to be different each time as I want each thread to perform a different functionality.
(LPVOID) &i, //Thread parameter
0, //Immediately run the thread
&dwThreadId //Thread Id
)
}
有什么方法可以创建'n'个Thread,每个Thread都有不同的Thread程序?
答案 0 :(得分:2)
试试这个:
DWORD WINAPI ThreadProc1( LPVOID lpParameter)
{
...
return 0 ;
}
DWORD WINAPI ThreadProc2( LPVOID lpParameter)
{
...
return 0 ;
}
...
typedef DWORD (WINAPI * THREADPROCFN)(LPVOID lpParameter);
THREADPROCFN fntable[4] = {ThreadProc1, ThreadProc2, ...} ;
//Start the threads
for (int i = 0; i < max_number; i++)
{
DWORD ThreadId ;
CreateThread( NULL,
0,
(LPTHREAD_START_ROUTINE)fntable[i],
(LPVOID) i,
0,
&ThreadId
) ;
}
这将启动max_number线程,其中包含fntable中定义的不同线程过程(TreadProc1,ThreadProc2等)。