win32线程编程思路

1.创建线程时先判断线程是否已经被创建或者运行,代码:

if (m_hThreadHandle==NULL) return false;
if (WaitForSingleObject(m_hThreadHandle,0)!=WAIT_TIMEOUT) return false;

关于函数WaitForSingleObject,请参考链接:点击打开链接

这其中涉及到线程信号的概念:如果线程结束,则有信号,线程在运行,则没有信号。

2.创建线程,调用函数_beginthreadex,判断通过句柄线程是否创建成功

<span style="white-space:pre">	</span>tagThreadParameter ThreadParameter;
	ZeroMemory(&ThreadParameter,sizeof(ThreadParameter));

	//设置变量
	ThreadParameter.bSuccess=false;
	ThreadParameter.pServiceThread=this;
	ThreadParameter.hEventFinish=CreateEvent(NULL,FALSE,FALSE,NULL);

	//效验状态
	ASSERT(ThreadParameter.hEventFinish!=NULL);
	if (ThreadParameter.hEventFinish==NULL) return false;

	//启动线程
	m_bRun=true;
	m_hThreadHandle=(HANDLE)::_beginthreadex(NULL,0,ThreadFunction,&ThreadParameter,0,&m_uThreadID);

3.结束线程,关闭句柄,设置线程ID = 0。
//等待事件
	WaitForSingleObject(ThreadParameter.hEventFinish,INFINITE);
	CloseHandle(ThreadParameter.hEventFinish);
4.线程执行函数:OnEventThreadRun()中增加while(true)死循环,处理响应的线程模块逻辑。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值