SuspendThread()暂停一个线程,ResumeThread()重启一个线程。参数均为线程的句柄。

#include <iostream>
#include <windows.h>
using namespace std;
DWORD WINAPI mythread(void *p)
{
for(int i=;i<;i++)
{
cout<<"hello,everybody!"<<endl;
::Sleep();
}
return ;
} int main()
{
HANDLE handle;
DWORD dw;
handle=::CreateThread(NULL,,mythread,NULL,,&dw);
::Sleep();
for(int i=;i<;i++)
{
cout<<"---now,suspended!----"<<endl;
::SuspendThread(handle); //暂停
for(int j=;j<;j++)
{
cout<<"good,thank you!"<<endl;
::Sleep();
}
cout<<"----now,resumed!----"<<endl;
::ResumeThread(handle); //重启
::Sleep();
}
::CloseHandle(handle);
return ;
}

TerminateThread()终止一个线程,两个参数(线程的句柄,线程的退出码)。此函数比较危险,被终止的线程函数立马停止执行,无法释放相关资源。

DWORD WINAPI mythread(void *lp)
{
for(int i=;i<;i++)
{
cout<<"hello"<<endl;
::Sleep();
}
return ;
} int main()
{
HANDLE handle;
DWORD dw;
handle=::CreateThread(NULL,,mythread,NULL,,&dw);
if(handle==NULL)
{
cout<<"thread failed!"<<endl;
return -;
}
::Sleep();
cout<<"thread terminated!"<<endl;
::TerminateThread(handle,);//终止线程的执行
::Sleep();
::CloseHandle(handle);
return ;
}

GetExitCodeThread()用来查询某个线程的退出码。如果线程还在运行,返回STILL_ACTIVE;如果已经结束,则返回由TerminateThread()或ExitThread()设置的退出码。

DWORD WINAPI mythread(void *p)
{
cout<<"mythread id is:"<<::GetCurrentThreadId()<<endl;
return ;
}
//分别输出线程ID和线程退出码
int main()
{
HANDLE handle;
DWORD dw;
handle=::CreateThread(NULL,,mythread,NULL,,&dw);
::Sleep();
::GetExitCodeThread(handle,&dw);
cout<<"thread exitCode is:"<<dw<<endl;
return ;
}

ExitThread()退出线程,并释放相关的资源。参数为线程的退出码。

DWORD WINAPI mythread(void *p)
{
cout<<"mythread id is :"<<::GetCurrentThreadId()<<endl;
cout<<"thread exit!"<<endl;
::ExitThread();//参数即为线程的退出码
cout<<"不能执行到这里"<<endl;
return ;
}
int main()
{
HANDLE handle;
DWORD dw;
handle=::CreateThread(NULL,,mythread,NULL,,&dw);
::Sleep();
::GetExitCodeThread(handle,&dw);
cout<<"thread id is :"<<dw<<endl;
::CloseHandle(handle);
return ;
}

BOOL WINAPI SetThreadPriority(HANDLE hThread,int nPriority)设置线程的优先级。

//(线程句柄,要设置的优先级)

Int WINAPI GetThreadPriority(HANDLE hThread);获得线程的优先级。

C++多线程二的更多相关文章

  1. java 多线程二

    java 多线程一 java 多线程二 java 多线程三 java 多线程四 线程中断: /** * Created by root on 17-9-30. */ public class Test ...

  2. java基础-多线程二

    java基础-多线程二 继承thread和实现Runnable的多线程每次都需要经历创建和销毁的过程,频繁的创建和销毁大大影响效率,线程池的诞生就可以很好的解决这一个问题,线程池可以充分的利用线程进行 ...

  3. C#夯实基础之多线程二:主线程、前台线程与后台线程

    我们在<C#夯实基础之多线程一:初识多线程>一文中第二部分中指出,既然windows最终发展出了多线程模型,按理说,我们直接使用一个.NetFramework的线程类就可以直接撸代码了,但 ...

  4. Java:多线程<二> 同步

    由于多线程的访问出现延迟和线程的随机性,在使用多线程时往往会伴随安全性的问题,这些问题一旦出现将会是非常严重的.为了解决这种安全性问题,synchronized出现了. synchronized用法一 ...

  5. Java多线程——<二>将任务交给线程,线程声明及启动

    一.任务和线程 <thinking in java>中专门有一小节中对线程和任务两个概念进行了具体的区分,这也恰好说明任务和线程是有区别的. 正如前文所提到的,任务只是一段代码,一段要达成 ...

  6. 从零开始学习Java多线程(二)

    前面已经简单介绍进程和线程,为后续学习做铺垫.本文讨论多线程传参,Java多线程异常处理机制. 1. 多线程的参数传递 在传统开发过程中,我们习惯在调用函数时,将所需的参数传入其中,通过函数内部逻辑处 ...

  7. 多线程二:线程池(ThreadPool)

    在上一篇中我们讲解了多线程的一些基本概念,并举了一些例子,在本章中我们将会讲解线程池:ThreadPool. 在开始讲解ThreadPool之前,我们先用下面的例子来回顾一下以前讲过的Thread. ...

  8. Java多线程(二) —— 深入剖析ThreadLocal

    对Java多线程中的ThreadLocal类还不是很了解,所以在此总结一下. 主要参考了http://www.cnblogs.com/dolphin0520/p/3920407.html 中的文章. ...

  9. python多线程(二)

    原文:http://blog.sina.com.cn/s/blog_4b5039210100esc1.html 基础不必多讲,还是直接进入python. Python代码代码的执行由python虚拟机 ...

  10. 并发和多线程(二)--线程安全、synchronized、CAS简介

    线程安全性: 当多个线程访问一个类的时候,这个类始终表示出正确的行为,那么这个类是线程安全的. 无状态的对象一定是线程安全的,例如大部分service.dao.Servlet都是无状态的. 线程安全体 ...

随机推荐

  1. 解决网站出现GET .woff 404 (Not Found)的问题

    网站发布到IIS后,发现网站使用的Bootstrap框架所引用的woff字体无法正常显示. 于是跟踪http请求,对woff字体请求出现GET .woff 404 (Not Found)的问题,但是项 ...

  2. 缩放系列(一):一个很好的bitmap手势缩放demo(多点触控)

    认识事物都遵循由简入繁的顺序,下面我们想实现一个控件或者一个布局的缩放,先从简单的例子开始吧,我们就以缩放图片做入门. 效果图: 一.要求 利用ScaleGestureDetector这个类实现图片缩 ...

  3. 关于PHP静态方法调用和实例化类调用的区别

    1.首先来澄清一些观点 由于静态方法在内存中只有一份,无论你调用多少次,都是共用的,而且没有对象的概念,所以不能在静态方法里面使用$this调用,如果非得调用的话,只能实例化自身类 而实例化不一样,每 ...

  4. Oracle10 多行和并

    SELECT fspc, wmsys.wm_concat (jsrzmc) as jsr FROM dxjsrxx GROUP BY fspc select fspc, LISTAGG(jsrzmc, ...

  5. 使WiFi具有保存历史连接的功能

    在wpa_supplicant.conf里面添加这个功能 update_config=1 就能更新了,保存了历史的连接AP,不用再输入密码

  6. DotNetBar教程

    DotNetBar是一组用于.NET Framework环境下的一组组件集,利用该组件集能够打造绚丽并且实用的应用程序界面,给开发人员提供极大的便利.关于DotNetBar,详情请参考其官方网站:ht ...

  7. sqlserver-根据2张表的id更新其他列值

    update a set a.ORGID = (select b.ORG_ID from PT_SERVICE b where a.SERVICEOID = b.SERVICEOID and a.OR ...

  8. struts2获得提交是get还是post方法提交

    String method=ServletActionContext.getRequest().getMethod(); System.out.println(method); 如果是get  会打印 ...

  9. Theos tweak MSHookFunction

    #import "substrate.h" static FILE * (*s_orig_fopen) ( const char * filename, const char * ...

  10. Dom+2016/4/20

    元素.parentNode父节点 offsetParent