_beginThreadex的用法

小光和Kimi建议创建线程应该用_beginThreadex,ripple里面就是用的这个。

花了老半天才把createThread改成_beginThreadex,例子如下:

//sipvoiplink.h

class SIPVoIPLink

{

private:

       static unsigned __stdcall ReceivingThrd(void * pParam);

}

 

//sipvoiplink.cpp

#include <Winsock2.h>
#include <process.h>

bool SIPVoIPLink::init()

{

......

HANDLE hThread;
unsigned threadID;

hThread = (HANDLE)_beginthreadex( NULL, 0, &SIPVoIPLink::ReceivingThrd, (LPVOID)this, 0, &threadID );

if(hThread == NULL)
   return false;

}

unsigned __stdcall SIPVoIPLink::ReceivingThrd(void * pParam)
{
//getEvent();
((SIPVoIPLink *)pParam)->getEvent();
return 0;
}

 

unsigned long _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_SUSPEND:suspended(悬挂)
 //第6个参数:用于记录线程ID的地址

 

 

一个线程的好例子:http://www.cppblog.com/mzty/archive/2007/07/25/28756.html 

转自:http://hi.baidu.com/qinpc/blog/item/5aaa8b54918e541b3a2935ee.html

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值