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. JavaScript在智能手机上的应用-测试是否支持滑动事件

    ---------------------------- <script type="text/javascript">                        ...

  2. POJ 1062 昂贵的聘礼(dij+邻接矩阵)

    ( ̄▽ ̄)" #include<iostream> #include<cstdio> #include<cstring> #include<cstd ...

  3. hdu_5695_Gym Class(拓扑排序)

    题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=5695 题意:中文题,不解释 题解:逆向拓扑字典序就行 #include<cstdio> # ...

  4. C++ 中Hello World的一种写法

    /*C++ Hello World**/#include <stdio.h>#include <iostream>int main(){    printf("Hel ...

  5. android版本 busybox

    http://www.busybox.net/downloads/binaries/1.21.1/  根据不同的平台选择busybox已经编译好的

  6. servlet多次跳转报IllegalStateException异常

    当发生在如下错误的时候,有一个方案可行, "java.lang.IllegalStateException: Cannot forward after response has been c ...

  7. iOS字符串转化成CGFloat

    NSString *str = @"abc"; [str floatValue];

  8. Loadrunner之文件的下载(八)

    老猪提供: https://mp.weixin.qq.com/s?__biz=MzIwOTMzNDEwNw==&mid=100000013&idx=1&sn=624f5bc74 ...

  9. ubuntu中安装myeclipse提示Insufficient Memory解决方法

    经过查看资料发现出现这个问题的原因是因为计算机中swap分区的内存不足,或者没有创建swap分区,google中http://www.bkjia.com/webzh/1003601.html提供了一种 ...

  10. jz2440 环境搭建遇到的问题

    已解决: