#include "iostream"
#include "windows.h"
using namespace std; class CWorkerThread{
public:
CWorkerThread(LPCTSTR m_szName):m_szName(m_szName),m_hThread(INVALID_HANDLE_VALUE){
m_hThread=CreateThread(
NULL,
0,
ThreadProc,
reinterpret_cast<LPVOID>(this),
0,
NULL
);
} virtual ~CWorkerThread(){CloseHandle(m_hThread);} virtual void WaitForCompletion(){
WaitForSingleObject(m_hThread,INFINITE);
} virtual void SetPriority(int nPriority){
SetThreadPriority(m_hThread,nPriority);
} virtual void Suspend(){
SuspendThread(m_hThread);
} virtual void Resume(){
ResumeThread(m_hThread);
} protected:
static DWORD WINAPI ThreadProc(LPVOID lpParam){
CWorkerThread *pThis=
reinterpret_cast<CWorkerThread*>(lpParam); pThis->DoStuff();
return (0);
} virtual void DoStuff(){
for(int n=0;n<10;n++){
cout<<"Thread"<<m_szName<<"ID:"<<GetCurrentThreadId()<<",count"<<n<<endl;
}
} protected:
HANDLE m_hThread;
LPCTSTR m_szName;
}; void main(){
CWorkerThread wtA("A");
CWorkerThread wtB("B"); wtA.SetPriority(THREAD_PRIORITY_LOWEST); wtB.Suspend(); wtA.WaitForCompletion();
wtB.Resume();
wtB.WaitForCompletion(); cout<<"Both threads complete."<<endl; getchar();
}

  

windows系统调用 线程 启动与挂起的更多相关文章

  1. windows系统调用 线程创建

    #include "windows.h" #include "iostream" using namespace std; class CWorkerThrea ...

  2. windows进程/线程创建过程 --- windows操作系统学习

    有了之前的对进程和线程对象的学习的铺垫后,我们现在可以开始学习windows下的进程创建过程了,我将尝试着从源代码的层次来分析在windows下创建一个进程都要涉及到哪些步骤,都要涉及到哪些数据结构. ...

  3. 并发、线程的基本概念&线程启动结束

    并发.进程.可执行程序.进程.线程的基本概念 1.并发 并发当有多个线程在操作时,如果系统只有一个CPU,则它根本不可能真正同时进行一个以上的线程,它只能把CPU运行时间划分成若干个时间段,再将时间段 ...

  4. C#线程篇---Windows调度线程准则(3)

    Windows本身就是一个抢占式操作系统,它的实现,必定有某种算法在里面,比如什么时候调度哪些线程,需要花费多长时间等问题. 我们时时在用Windows,作为程序员,我们有必要知道其中最贴近我们的算法 ...

  5. Windows系统调用架构分析—也谈KiFastCallEntry函数地址的获取

    为什么要写这篇文章 1.      因为最近在学习<软件调试>这本书,看到书中的某个调试历程中讲了Windows的系统调用的实现机制,其中讲到了从Ring3跳转到Ring0之后直接进入了K ...

  6. Windows系统调用中API从3环到0环(上)

    Windows内核分析索引目录:https://www.cnblogs.com/onetrainee/p/11675224.html Windows系统调用中API从3环到0环(上) 如果对API在三 ...

  7. MFC 线程启动、暂停、继续、终止

    CWinThread* p_myThread;//创建线程指针 BOOL flag_myThread = FALSE;//是否终止 //头文件中声明(放类内) static UINT MyThread ...

  8. Thread.start() ,它是怎么让线程启动的呢?

    作者:小傅哥 博客:https://bugstack.cn Github:https://github.com/fuzhengwei/CodeGuide/wiki 沉淀.分享.成长,让自己和他人都能有 ...

  9. 当程序以Windows Services形式启动时当前路径不对

    当程序以Windows Services形式启动时当前路径不对 @(操作系统)[博客|dotNet] 很多时候我们需要将我们的程序写成利用Windows服务的形式来让它能够自启动.今天遇到一个问题,当 ...

随机推荐

  1. EFI

    有CSM的UEFI BIOS应该可以支持EFI Native和legacy两种启动方式吧,在BIOS SETUP选项里面有的选. EFI在开机时的作用和BIOS一样,就是初始化PC,但在细节上却又不一 ...

  2. 使用JavaScript创建我的分页

    把下面的方法放到一个js文件,页面引用他就行了 JavaScript function PageList(PageSize, PageIndex, TotalCount, ParList) { $(& ...

  3. Android 代码中文字在手机上显示乱码问题解决方法

    在学习Android过程中,用于测试时发现,代码中的中文在真机上会显示乱码, 网上查阅了些资料,参考如下: http://www.androidchina.net/3024.html http://b ...

  4. Wordpress引入多说插件

    多说为Wordpress制作了插件,按照以下步骤,快速让你的网站迅速使用多说! 1.下载插件:https://wordpress.org/plugins/duoshuo/ 或在WordPress后台“ ...

  5. The All-purpose Zero---hdu5773(LIS变形)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5773 题意: 给出n个数,其中 0 可当作任何数,求能够得到的最长上升子序列(严格上升)的长度; 我们 ...

  6. iOS 调出storyboard里面起始Controller的箭头

    在storyboard里面,如果第一个ViewController不是默认的ViewController的时候,我们就需要拖拽一个出来. 如果把默认的ViewController删掉的话,前面的箭头, ...

  7. Web service是什么?

    原文:http://www.ruanyifeng.com/blog/2009/08/what_is_web_service.html 我认为,下一代互联网软件将建立在Web service(也就是&q ...

  8. ApacheBench(ab)使用详解

    ab命令原理  Apache的ab命令模拟多线程并发请求,测试服务器负载压力,也可以测试nginx.lighthttp.IIS等其它Web服务器的压力.  ab命令对发出负载的计算机要求很低,既不会占 ...

  9. Html语言基础

    接触html有一段时间了,对html做简单的总结. 1.HTML基础标签 <p>这是段落</p> 浏览器中效果: 这是段落 -------------------------- ...

  10. 如何禁止DELETE、PUT、OPTIONS、TRACE、HEAD等协议访问应用程序 .

    原文:http://linder.iteye.com/blog/735435   简介 WebDAV (Web-based Distributed Authoring and Versioning)是 ...