fangshenghui


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

 

#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

分类:

技术点:

相关文章:

  • 2021-10-23
  • 2022-02-16
  • 2022-12-23
  • 2022-12-23
  • 2021-12-03
  • 2022-01-27
  • 2022-12-23
  • 2022-02-06
猜你喜欢
  • 2021-12-14
  • 2022-12-23
  • 2022-12-23
  • 2021-12-06
  • 2021-11-10
  • 2021-09-25
相关资源
相似解决方案