• windows系统调用 线程 启动与挂起


    #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();
    }
    

      

  • 相关阅读:
    视图中访问 路由参数
    视图中的Layout使用(转)
    js判断浏览器类型以及版本
    再关于IE11
    关于IE11
    js获取当前页面的网址域名地址
    contenteditable 属性
    HTMl5的sessionStorage和localStorage(转)
    c 数组做为形參时 该參数退化为指针
    汉诺塔-递归实现
  • 原文地址:https://www.cnblogs.com/593213556wuyubao/p/3781458.html
Copyright © 2020-2023  润新知