Windows编程--关于_beginthreadex的一个宏定义


之所以写成宏定义。是因为觉得每一次对参值进行类型转换很麻烦。

 

#define BEGINTHREADEX(psa, cbStack, pfnStartAddr, \
pvParam, fdwCreate, pdwThreadId) \
((HANDLE)_beginthreadex( \
(
void *) (psa), \
(unsigned) (cbStack), \
(PTHREAD_START) (pfnStartAddr), \
(
void *) (pvParam), \
(unsigned) (fdwCreate), \
(unsigned
*) (pdwThreadId)))

 

 

 

unsignedlong _beginthreadex( void *security, unsigned stack_size, unsigned ( __stdcall*start_address )( void * ), void *arglist, unsigned initflag, unsigned*thrdaddr );

 

//第1个参数:安全属性,NULL为默认安全属性
//第2个参数:指定线程堆栈的大小。如果为0,则线程堆栈大小和创建它的线程的相同。一般用0
//第3个参数:指定线程函数的地址,也就是线程调用执行的函数地址(用函数名称即可,函数名称就表示地址)
//第4个参数:传递给线程的参数的指针,可以通过传入对象的指针,在线程函数中再转化为对应类的指针
//第5个参数:线程初始状态,0:立即运行CREATE_SUSPENDsuspended(挂起)
//第6个参数:用于记录线程ID的地址

FangSH

2011-01-05

posted @ 2011-01-05 14:10  xyecho  阅读(401)  评论(0编辑  收藏  举报