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

Posted u4110122855

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++多线程编程——线程的挂起唤醒与终止相关的知识,希望对你有一定的参考价值。

在线程创建并运行后,用户可以对线程执行挂起终止操作.所谓挂起,是指暂停线程的执行,用户可以通过气候的唤醒操作来恢复线程的执行.

线程终止是指结束线程的运行.系统提供了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); 

 

 

以上是关于C++多线程编程——线程的挂起唤醒与终止的主要内容,如果未能解决你的问题,请参考以下文章

Linux中线程的挂起与恢复(进程暂停)

如何正确终止 dll 中的挂起线程?

线程的挂起和恢复 转载

线程的阻塞与挂起

检测终止的挂起应用程序

Java并发编程:线程挂起恢复与终止