亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

C++多線程編程(線程類)

2019-11-14 10:19:56
字體:
來源:轉載
供稿:網友

簡述

通過線程類來管理線程,實現業務邏輯與線程管理分離

源代碼

接口類 SFRunnable.h

class SFRunnable{ public: virtual ~SFRunnable() {}; virtual void Run() = 0;};

線程類 SFThread.h

#ifndef __SFTHREAD_H__#define __SFTHREAD_H__#include <string>#include <windows.h>#include <SFThread.cpp

#include "SFThread.h"SFThread::SFThread(void) : m_pRunnable(NULL),m_bRun(false)//進入構造函數之前 先初始化 成員變量 有一些成員變量 必須先初始化 比如常量什么的{}SFThread::~SFThread(void){}SFThread::SFThread(SFRunnable * pRunnable) : m_ThreadName(""),m_pRunnable(pRunnable),m_bRun(false){}SFThread::SFThread(const char * ThreadName, SFRunnable * pRunnable) : m_ThreadName(ThreadName),m_pRunnable(pRunnable),m_bRun(false){}SFThread::SFThread(std::string ThreadName, SFRunnable * pRunnable) : m_ThreadName(ThreadName),m_pRunnable(pRunnable),m_bRun(false){}bool SFThread::Start(bool bSuspend){ if(m_bRun) { return true; } if(bSuspend) { m_handle = (HANDLE)_beginthreadex(NULL, 0, StaticThreadFunc, this, CREATE_SUSPENDED, &m_ThreadID); } else { m_handle = (HANDLE)_beginthreadex(NULL, 0, StaticThreadFunc, this, 0, &m_ThreadID); } m_bRun = (NULL != m_handle); return m_bRun;}void SFThread::Run(){ if(!m_bRun)//如果沒運行 { return; } if(NULL != m_pRunnable)//如果句柄不為空 { m_pRunnable->Run(); } m_bRun = false;}void SFThread::Join(int timeout){ if(NULL == m_handle || !m_bRun) { return; } if(timeout <= 0) { timeout = INFINITE; } ::WaitForSingleObject(m_handle, timeout);}void SFThread::Resume(){ if(NULL == m_handle || !m_bRun) { return; } ::ResumeThread(m_handle);}void SFThread::Suspend(){ if(NULL == m_handle || !m_bRun) { return; } ::SuspendThread(m_handle);}bool SFThread::Terminate(unsigned long ExitCode){ if(NULL == m_handle || !m_bRun) { return true; } if(::TerminateThread(m_handle, ExitCode)) { ::CloseHandle(m_handle); m_bRun = false;//設置線程的運行狀態為假 return true; } return false;}unsigned int SFThread::GetThreadID(){ return m_ThreadID;}std::string SFThread::GetThreadName(){ return m_ThreadName;}void SFThread::SetThreadName(std::string ThreadName){ m_ThreadName = ThreadName;}void SFThread::SetThreadName(const char * ThreadName){ if(NULL == ThreadName) { m_ThreadName = ""; } else { m_ThreadName = ThreadName; }}unsigned int SFThread::StaticThreadFunc(void * arg){ SFThread * pThread = (SFThread *)arg; pThread->Run(); return 0;}

業務類 SFTimer.h

#ifndef SFTimer_H#define SFTimer_H#include<windows.h>#include"SFThread.h"#define WM_UPDATETIME WM_USER+101 //用戶消息,每秒發送一次。class SFTimer:public SFRunnable{ private: HWND hwnd; int Day; int Hour; int Minute; int Second; void init();//初始化天、小時、分鐘、秒全部為零 void CountDown();//倒計時 void Time();//正計時 public: SFTimer(); SFTimer(HWND hwnd); int getDay(); void setDay(int day); int getHour(); void setHour(int hour); int getMinute(); void setMinute(int minute); int getSecond(); void setSecond(int second); void Run(); void SendUploadTimeMessage();};#endif

SFTmier.cpp

#include "SFTimer.h"SFTimer::SFTimer(){ this->init();}SFTimer::SFTimer(HWND hwnd){ this->init(); this->hwnd = hwnd;}int SFTimer::getDay(){ return this->Day;}void SFTimer::setDay(int day){ this->Day = day;}int SFTimer::getHour(){ return this->Hour;}void SFTimer::setHour(int hour){ this->Hour = hour;}int SFTimer::getMinute(){ return this->Minute;}void SFTimer::setMinute(int minute){ this->Minute = minute;}int SFTimer::getSecond(){ return this->Second;}void SFTimer::setSecond(int second){ this->Second = second;}void SFTimer::SendUploadTimeMessage(){ PostMessage(this->hwnd,WM_UPDATETIME,this->Minute,this->Second);}void SFTimer::init(){ this->Day = 0; this->Hour = 0; this->Minute = 0; this->Second = 0;}void SFTimer::CountDown(){ for(;this->Day>=0;this->Day--)//天循環 { for(;this->Hour>=0;this->Hour--)//小時循環 { for(; this->Minute >=0; this->Minute--)//分鐘循環 { for(; this->Second >=0; this->Second--)//秒循環 { Sleep(1000);//Sleep看清楚間 this->SendUploadTimeMessage();//發送消息 } this->Second = 59; } } } }void SFTimer::Time(){ this->init();//初始化各個參數 while(this->Minute<5)//5分鐘計時 { this->Second+=1; if(this->Second > 60) { this->Second = 0; this->Minute += 1; if(this->Minute > 60) { this->Minute = 0; this->Hour += 1; if(this->Hour > 60) { this->Hour = 0; this->Day +=1; } } } this->SendUploadTimeMessage(); Sleep(1000); }}void SFTimer::Run(){ this->CountDown(); this->Time();}

測試代碼 testMain.cpp

#include <iostream>using namespace std;#include "SFTimer.h"#include "SFThread.h"int main(int argc, char *argv[]) { SFTimer* timer = new SFTimer();//具體業務類 timer->setDay(0);//設置天 timer->setHour(0);//設置小時 timer->setMinute(2);//設置分鐘 timer->setSecond(0);//設置秒 SFThread* thread = new SFThread(timer);//線程類 thread->Start();//啟動線程 while(1) { cout<<"計時開始:"<<timer->getMinute()<<"分"<<timer->getSecond()<<"秒"<<endl; Sleep(1000);//Sleep看清楚間 system("cls"); } getchar(); return 0; }

實現效果

如下圖所示:實現2分鐘倒計時,以及5分鐘正計時。 這里寫圖片描述


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
成人精品久久av网站| 热久久免费视频精品| 亚洲大尺度美女在线| 国产精品成人一区二区三区吃奶| 国产又爽又黄的激情精品视频| 国产免费一区二区三区在线观看| 亚洲精选在线观看| 亚洲福利视频网站| 国产成人精品av| 日本午夜在线亚洲.国产| 亚洲色图25p| 欧美一级bbbbb性bbbb喷潮片| 欧美在线视频在线播放完整版免费观看| 欧美一级免费看| 欧美精品做受xxx性少妇| 亚洲国产成人精品久久久国产成人一区| 国产精品ⅴa在线观看h| 久久精品影视伊人网| 中文字幕精品一区久久久久| 欧美日韩国产限制| 欧美日韩性视频在线| 久久97久久97精品免视看| 亚洲精品www久久久久久广东| 国产精品电影久久久久电影网| 欧美成人午夜免费视在线看片| 久久99热精品| 日韩国产欧美精品在线| 日韩欧美一区二区在线| 国产日韩欧美在线播放| 欧美激情在线狂野欧美精品| 国产精品国产自产拍高清av水多| 夜夜嗨av色综合久久久综合网| 亚洲欧美日韩中文在线| 亚洲第一精品夜夜躁人人躁| 亚洲精品第一国产综合精品| 91精品视频在线| 亚洲欧美日韩一区二区三区在线| 高清视频欧美一级| 国产精品日韩在线播放| 欧美巨乳在线观看| 成人精品在线观看| 黄色一区二区在线观看| 亚洲精品www| 日韩精品黄色网| xxxxx成人.com| 成人黄色网免费| 最近2019年中文视频免费在线观看| 好吊成人免视频| 日韩av电影院| 国产精品高潮呻吟久久av黑人| 在线观看国产精品日韩av| 国外成人在线播放| 国产精品xxxxx| 亚洲午夜久久久久久久| 日本a级片电影一区二区| 国产成人一区二区| 欧美成人性色生活仑片| 亚洲午夜精品久久久久久性色| 欧美性在线视频| 欧美色欧美亚洲高清在线视频| 国产精品日韩在线| 亚洲а∨天堂久久精品喷水| 国产精品久久久久一区二区| 亚洲第一精品电影| 久久免费视频在线| 最新国产精品拍自在线播放| 亚洲欧美国产日韩中文字幕| 日韩中文字幕精品| 久久99久国产精品黄毛片入口| 久久久精品欧美| 精品久久在线播放| 久久久女人电视剧免费播放下载| 久久伊人精品视频| 精品亚洲一区二区三区在线观看| 亚洲精品福利视频| 91社区国产高清| 91人人爽人人爽人人精88v| 黄色91在线观看| 青青在线视频一区二区三区| 亚洲精品永久免费精品| 日本成人激情视频| 亚洲自拍欧美另类| 亚洲国产成人精品久久| 成人日韩在线电影| 久久久久久噜噜噜久久久精品| 亚洲香蕉伊综合在人在线视看| 精品一区二区三区四区| 亚洲天堂成人在线视频| 欧美电影免费播放| 91福利视频网| 欧美色图在线视频| 国产精品91在线观看| 亚洲日本中文字幕免费在线不卡| 日韩中文字幕网| 欧美老少做受xxxx高潮| 国产亚洲欧美另类中文| 色老头一区二区三区在线观看| 亚洲国产99精品国自产| 国产精品三级久久久久久电影| 在线日韩精品视频| 麻豆乱码国产一区二区三区| …久久精品99久久香蕉国产| 在线观看国产精品淫| 欧美色道久久88综合亚洲精品| 亚洲国产一区二区三区四区| 国产欧洲精品视频| 中文字幕亚洲二区| 国产精品第10页| 中文字幕亚洲无线码在线一区| 午夜精品在线视频| 欧美激情精品久久久久久大尺度| 亚洲国产精品小视频| 欧美激情在线观看视频| 国产一区二区精品丝袜| 国产99久久精品一区二区 夜夜躁日日躁| 色樱桃影院亚洲精品影院| 亚洲人成人99网站| 国产精品久久久久99| 欧美午夜视频在线观看| 久久久av亚洲男天堂| 久久国产精品久久久| 国产精品亚洲美女av网站| 奇米影视亚洲狠狠色| 国产欧美久久一区二区| 亚洲国产高清高潮精品美女| 91国产精品电影| 97精品久久久| 欧美日韩亚洲系列| 欧美精品做受xxx性少妇| 欧美国产日本在线| 4p变态网欧美系列| 一区二区三区精品99久久| 亚洲精品在线不卡| 欧美精品免费在线| 国产z一区二区三区| 色偷偷88888欧美精品久久久| 亚洲高清福利视频| 91精品国产乱码久久久久久久久| 国产精品久久中文| 欧美日韩亚洲网| 精品久久久久国产| 激情懂色av一区av二区av| 国产精品久久网| 成人黄色短视频在线观看| 51视频国产精品一区二区| 黄色一区二区在线| 色妞色视频一区二区三区四区| 韩国三级日本三级少妇99| 91精品在线一区| 久久九九热免费视频| 精品高清美女精品国产区| 日韩在线免费高清视频| 在线免费看av不卡| 国产精品免费久久久久久| 精品久久久999| 日韩av在线资源| 国产成人精品免高潮在线观看| 日日狠狠久久偷偷四色综合免费| 欧美wwwxxxx| 日韩最新中文字幕电影免费看| 亚洲第一页在线| 国产成人鲁鲁免费视频a| 九九综合九九综合| 亚洲国产高潮在线观看|