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);
                }

猜你喜欢

转载自blog.csdn.net/weixin_42339460/article/details/81063793
今日推荐