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都是无状态的. 线程安全体 ...
随机推荐
- 按钮特效-Enter键自动提交表单
—————————————————————— <script type="text/javascript"> //当用户按 ...
- css3-多列显示文字
-------------------------- <style> #demo{ margin: 20px auto; ...
- hdu_1253_胜利大逃亡(bfs+剪枝)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=1253 题意:三维BFS,不解释 题解:DFS+剪枝会超时,裸BFS会超时,BFS+剪枝才能AC,有点伤 ...
- 25个超有用的 AngularJS Web 开发工具
AngularJS是为了克服HTML在构建应用上的不足而设计的.HTML是一门很好的为静态文本展示设计的声明式语言,改善了JavaScript. 下面我要说的就是25个超有用的AngularJS工具, ...
- The project target (Android 6.0) was not properly loaded或者The rendering target (Android 6.0) is still loading.
第一步:在project上右键选择Properties,然后选择Android, 然后在Project Build Target那里选择其他的Target试试: 第二步: 我选了6.0之后,就有菜单可 ...
- SQL SERVER中强制类型转换cast和convert的区别
在SQL SERVER中,cast和convert函数都可用于类型转换,其功能是相同的, 只是语法不同. cast一般更容易使用,convert的优点是可以格式化日期和数值. 代码 select CO ...
- 【java图形计算器】 java awt swing组件应用
package package1; import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swi ...
- 【一题多解】 map 二分 hash trie poj 2503
各种方式解这道题!! 利用map 超时了 #include <iostream> #include <string> #include <map> using na ...
- TexturePacker license Key免费获取方式
TexturePacker是一款功能非常强大的图片制作工具.是一款付费软件,但是TexturePacker的作者Andreas Löw先生也给出获得免费key 的方法...大家可以到这个网站去申请 h ...
- SwiftDate 浅析
SwiftDate是Github上开源的,使用Swift语言编写的NSDate封装库,可以很方便的在Swift中处理日期,比如日期创建,比较,输出等. 特性 支持数学运算符进行日期计算(比如myDat ...