C++多线程二
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++多线程二的更多相关文章
- java 多线程二
java 多线程一 java 多线程二 java 多线程三 java 多线程四 线程中断: /** * Created by root on 17-9-30. */ public class Test ...
- java基础-多线程二
java基础-多线程二 继承thread和实现Runnable的多线程每次都需要经历创建和销毁的过程,频繁的创建和销毁大大影响效率,线程池的诞生就可以很好的解决这一个问题,线程池可以充分的利用线程进行 ...
- C#夯实基础之多线程二:主线程、前台线程与后台线程
我们在<C#夯实基础之多线程一:初识多线程>一文中第二部分中指出,既然windows最终发展出了多线程模型,按理说,我们直接使用一个.NetFramework的线程类就可以直接撸代码了,但 ...
- Java:多线程<二> 同步
由于多线程的访问出现延迟和线程的随机性,在使用多线程时往往会伴随安全性的问题,这些问题一旦出现将会是非常严重的.为了解决这种安全性问题,synchronized出现了. synchronized用法一 ...
- Java多线程——<二>将任务交给线程,线程声明及启动
一.任务和线程 <thinking in java>中专门有一小节中对线程和任务两个概念进行了具体的区分,这也恰好说明任务和线程是有区别的. 正如前文所提到的,任务只是一段代码,一段要达成 ...
- 从零开始学习Java多线程(二)
前面已经简单介绍进程和线程,为后续学习做铺垫.本文讨论多线程传参,Java多线程异常处理机制. 1. 多线程的参数传递 在传统开发过程中,我们习惯在调用函数时,将所需的参数传入其中,通过函数内部逻辑处 ...
- 多线程二:线程池(ThreadPool)
在上一篇中我们讲解了多线程的一些基本概念,并举了一些例子,在本章中我们将会讲解线程池:ThreadPool. 在开始讲解ThreadPool之前,我们先用下面的例子来回顾一下以前讲过的Thread. ...
- Java多线程(二) —— 深入剖析ThreadLocal
对Java多线程中的ThreadLocal类还不是很了解,所以在此总结一下. 主要参考了http://www.cnblogs.com/dolphin0520/p/3920407.html 中的文章. ...
- python多线程(二)
原文:http://blog.sina.com.cn/s/blog_4b5039210100esc1.html 基础不必多讲,还是直接进入python. Python代码代码的执行由python虚拟机 ...
- 并发和多线程(二)--线程安全、synchronized、CAS简介
线程安全性: 当多个线程访问一个类的时候,这个类始终表示出正确的行为,那么这个类是线程安全的. 无状态的对象一定是线程安全的,例如大部分service.dao.Servlet都是无状态的. 线程安全体 ...
随机推荐
- print a float number with 3 digits following
just use the java's printf function. It is like C's printf. System.out.printf("%.3f\n", x) ...
- 设置ulabel的行间距
NSString *text = @"我是一个好人,12份绿色购物个 i 认为个人我国 i 加热哦围观 i我国3噢奇怪级我过街天桥哦推荐我她否认"; NSMutableParagr ...
- Nicholas C. Zakas谈怎样才能成为优秀的前端工程师
黄色阴影为业务,红色字体为哲学 昨天,我负责了Yahoo!公司组织的一次面试活动,感触颇深的是其中的应聘者提问环节.我得说自己对应聘者们提出的大多数问题都相当失望.我希望听到一些对在Yahoo!工作充 ...
- JSP基本语法--包含指令<%@include file="路径"%> <jsp:include page>
包含指令,真正改变的地方只有具体内容处: 方法1: 在每个jsp页面(HTML)都包含工具栏,头部信息,尾部信息,具体内容 方法2: 将工具栏,头部信息,尾部信息都分成各个独立的文件,使用的时候直接导 ...
- linux git升级到1.8.3
1. Download PUIAS repo: wget -O /etc/yum.repos.d/PUIAS_6_computational.repo https://gitlab.com/gitla ...
- 转 Oracle 12c 使用scott等普通用户的方法
一.前言 最近电脑上安装了oracle 12c数据库,想体验下新特性.安装完后,便像11g一样在dos窗口进行下面的操作: SQL*Plus: Release 12.1.0.2.0 Productio ...
- 获取Excel数据(或部分数据)并导出成txt文本格式
运行代码前先导入jxl架包,以下代码仅供参考: 测试excel文件(我要获取该excel的内容为省.县.乡.村.组和PH的值): ExcelTest01类代码如下: // 读取Excel的类 impo ...
- 1988: Sn 爆long long 的处理方法
题目描述 给你两个数 n, p(0 < n,p <= 10^15); a1 = 1; a2 = 1+2; a3 = 1+2+3; ... an = 1+2+3+...+n Sn ...
- linux命令chown和chmod什么区别
chown一般用来 更改属主.也就是文件所属用户.chmod功能要比chown要强大.可更改文件所有属性和权限.只有管理员账户才有权限用此命令. chown 是修改文件的所有者(owner),和所属组 ...
- HDU 3861 The King’s Problem(tarjan连通图与二分图最小路径覆盖)
题意:给我们一个图,问我们最少能把这个图分成几部分,使得每部分内的任意两点都能至少保证单向连通. 思路:使用tarjan算法求强连通分量然后进行缩点,形成一个新图,易知新图中的每个点内部的内部点都能保 ...