win32线程编程思路

来源:互联网 发布:ubuntu停止当前命令 编辑:程序博客网 时间:2024/05/18 01:39

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)死循环,处理响应的线程模块逻辑。


0 0