加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

C++多线程编程——线程的挂起、唤醒与终止

(2010-10-11 10:09:04)
标签:

杂谈

分类: Win32


在线程创建并运行后,用户可以对线程执行挂起终止操作.所谓挂起,是指暂停线程的执行,用户可以通过气候的唤醒操作来恢复线程的执行.线程终止是指结束线程的运行.系统提供了SuspendThread,ResumeThread和TerminateThread等函数来实现线程的挂起、唤醒和停止操作。

SuspendThread
该函数用于挂起线程.语法格式如下:

        DWORD SuspendThread(HANDLE hThread);
        
  • hThread: 表示线程句柄
  • 返回值: 如果函数执行成功,返回值为之前挂起的线程次数;如果函数执行失败,返回值为0xFFFFFFFF

ResumeThread
该函数用于煎炒线程挂起的次数,如果线程挂起的次数为0,将唤醒线程.语法格式如下:

        DWORD ResumeThread(HANDLE hThread);
        
  • hThread: 表示线程句柄
  • 返回值: 如果函数执行成功,返回值为之前挂起的线程次数;如果函数执行失败,返回值为0xFFFFFFFF

ExitThread
该函数用于结束当前线程.语法格式如下:

VOID ExitThread(DWORD dwExitCode);
  • dwExitCode: 表示线程退出代码

TerminateThread
该函数用于强制终止线程的执行.语法格式如下:

BOOL TerminateThread(HANDLE hThread, DWORD dwExitCode);
  • hThread: 表示待终止的线程句柄
  • dwExitCode: 表示线程退出代码

例子:
线程代码:

              DWORD __stdcall ThreadProc(LPVOID lpParameter)
                {
                        CMultiThreadDlg * pdlg = (CMultiThreadDlg *)lpParameter;
                        pdlg->m_ProCtrl.SetRange32(0,99999);
                        for (int i = 0; i < 99999; i++)
                        {
                                pdlg->m_ProCtrl.SetPos(i);
                        }
                        return 0;
                }
       

创建线程:

        void CMultiThreadDlg::OnBtCreate()
                {
                        m_hThread = CreateThread(NULL,0,ThreadProc,this,0,NULL);
                }
       

挂起线程:

           void CMultiThreadDlg::OnBtSuspend()
                {
                        SuspendThread(m_hThread);
                }
       

唤醒线程:

           void CMultiThreadDlg::OnBtResume()
                {
                        ResumeThread(m_hThread);
                }
       

终止线程:

           void CMultiThreadDlg::OnBtTerminate()
                {
                        TerminateThread(m_hThread);
                }
       

 

 

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有