vc创建一个线程和销毁的方法
来源:互联网 发布:优化目标函数 编辑:程序博客网 时间:2024/05/21 17:42
The CreateThread function creates a thread to execute within the address space of the calling process.
HANDLE CreateThread(
LPSECURITY_ATTRIBUTES lpThreadAttributes,
DWORD dwStackSize, 指定初始提交栈的大小
LPTHREAD_START_ROUTINE lpStartAddress,
//由线程执行,表示线程的起始地址,指定线程入口函数,
//该入口函数的参数类型以及返回类型要与ThreadProc()函数声明的类型要保持一致
LPVOID lpParameter, //指定一个单独的值传递给线程
DWORD dwCreationFlags, //指定控件线程创建的附加标记
LPDWORD lpThreadId ); //指向一个用来接收线程的标识符变量
参数1:指向SECURITY_ATTRIBUTES结构体的指针。
vc终止线程有三种方法:
1.线程可以在自身内部调用AfxEndThread()来终止自身的运行
2.可以在线程的外部调用BOOL TerminateThread( HANDLE hThread, DWORD dwExitCode )来强行终止一个线程的运行,
然后调用CloseHandle()函数释放线程所占用的堆栈
TerminateThread会有资源泄漏,不要万不得已,不要用这个函数
DWORD code;
if(GetExitCodeThread(MonitorComm,&code)) //MonitorComm 你创建的线程句柄
if(code==STILL_ACTIVE)
{
TerminateThread(MonitorComm,0);
CloseHandle(MonitorComm);
}
这样就安全了
3.第三种方法是改变全局变量,使线程的执行函数返回,则该线程终止。
下面的例子来演示第三种方法
全局变量m_end来表示是否要结束线程
bool m_end = false;
HWND hWnd;
启动线程:
CWinThread* pThread;
hWnd = GetSafeHwnd();
pThread = AfxBeginThread(ThreadProc,hWnd);
pThread->m_bAutoDelete = false;
线程的函数
UINT ThreadProc(LPVOID pParam);
UINT ThreadProc(LPVOID pParam)
{
while(!m_end)
{
AfxMessageBox("test;");
::Sleep(2000);
}
return 0;
}
终止线程代码
m_end = true;
WaitForSingleObject(pThread->m_hThread,INFINITE); //等待线程结束
delete pThread; //删除线程
- vc创建一个线程和销毁的方法
- vc创建一个线程的方法
- VC中关于创建一个新的线程的方法
- vc 创建线程的方法
- VC 中非模态对话框的创建和销毁
- VC非模态对话框创建和销毁
- VC非模态对话框创建和销毁
- VC非模态对话框创建和销毁
- 转:VC非模态对话框创建和销毁
- VC非模态对话框创建和销毁
- VC非模态对话框创建和销毁
- VC非模态对话框创建和销毁
- VC非模态对话框创建和销毁
- VC非模态对话框创建和销毁
- VC非模态对话框创建和销毁
- VC如何创建一个新的线程
- 创建一个线程的方法
- VC中创建线程的方法
- linux并发控制之中断屏蔽
- [C++基础]C++4个转型操作符——数据类型转换
- Mac配置Python开发环境(Eclipse +Pydev+Python)
- netlink 编程介绍
- repeater嵌套checkbox选项的取值赋值
- vc创建一个线程和销毁的方法
- android应用程序获取Root权限
- 创业者2012必看十大文章(5)
- Usaco:Palindromic Squares
- oracle执行计划
- 创业者2012必看十大文章(6)
- Asp.Net Web控件 (二)(无间隙滚动控件)
- Unity3d中英文API
- Log4J的配置文件详解