在vc中动态创建线程
你好,我碰到一个问题,一时解决不了,想请教:
在vc中,创建一个线程用到函数:_beginthread( void( __cdecl *start_address )( void * ), unsigned stack_size, void *arglist );第一个参数start_address 可以用要执行的函数名,但是现在函数名是读配置文件的,所以读出来为字符串,我就无法执行该函数,能否将解决办法告知我,非常感谢!
问题点数:50、回复次数:4Top
1 楼FireAngel(土豆)回复于 2000-11-11 23:13:00 得分 20
建议你不要用_beginthread之类的函数,这是运行库函数,你可以使用CreateThread函数的。这样比较保险的。
void CreateMyThread()
{
DWORD dwThreadID;
HANDLE hThread = CreateThread(NULL, // no security attributes
0, // use default stack size
(LPTHREAD_START_ROUTINE) ThreadFunc,
(LPVOID)NULL, // 可以通过这个参数传送一个参数的指针到处理函数中
0, // creation flag
&dwThreadID); // thread identifier
if (hThread == NULL)
return;
... ...
}
DWORD ThreadFunc(LPVOID lpVoid) //lpVoid即为创建线程时传入的参数,可以为空
{
... ...
//在你的线程中的处理。
return 0;
} Top
2 楼wanggenggz(wanggenggz)回复于 2000-11-11 23:44:00 得分 10
用CreateThread,他很好用Top
3 楼deanjiang(dean)回复于 2000-11-15 09:50:00 得分 20
上面两位谬矣
如果想用C++/C的标准库就必须使用_beginthread[ex],这样才不会出现多线程问题。
jollyqiao
你可以在你的程序里将函数名影射成函数嘛。
unsigned ( __stdcall *start_address )( void * );
if(strcmp(a,"funcb"))
start_address=funcb;
else......Top
4 楼jollyqiao(jolly)回复于 2001-03-08 19:15:00 得分 0
感谢FireAngel(堕落天使)、wanggenggz(wanggenggz) 、deanjiang(dean)!
Top





