中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

設(shè)計出色的網(wǎng)站杭州百家號優(yōu)化

設(shè)計出色的網(wǎng)站,杭州百家號優(yōu)化,wordpress保存登陸,b2b網(wǎng)站推廣的效果一、需求 在做播放器的時候,很多的模塊會創(chuàng)建一個線程,然后在這個線程上跑單獨的功能,同時,需要對這個線程進行控制,比如暫停,繼續(xù)等,如播放器的解碼,解封裝等,都需要對…

一、需求

在做播放器的時候,很多的模塊會創(chuàng)建一個線程,然后在這個線程上跑單獨的功能,同時,需要對這個線程進行控制,比如暫停,繼續(xù)等,如播放器的解碼,解封裝等,都需要對對應(yīng)的線程進行控制,那么為了方便的進行控制,所以引入單獨的thread封裝,并且導(dǎo)出對應(yīng)的回調(diào)接口。

二、實現(xiàn)

1. com_thread.h

#pragma once#include <thread>
#include <atomic>class IThreadSink
{
public:virtual ~IThreadSink() {}virtual void onThreadCreate() = 0;virtual void onThreadDestroy() = 0;virtual void onThreadRun() = 0;virtual void onThreadPause() = 0;virtual void onThreadTask() = 0;
};class IThread
{typedef enum{STAT_WAIT,STAT_RUN,STAT_PAUSE,STAT_QUIT}ThreadStat;public:virtual ~IThread() {}IThread(IThreadSink* _sink);void threadCreate();void threadDestroy();void run();void pause();
private:std::atomic<int> _stat_cur;std::atomic<int> _stat_set;std::thread _thread;IThreadSink* _sink;bool _is_init;void _threadTaskInternal();void _setStat(ThreadStat stat);
};

2. com_thread.c

#include "com_thread.h"IThread::IThread(IThreadSink* sink):_stat_cur(STAT_WAIT),_stat_set(STAT_WAIT),_sink(NULL),_is_init(false)
{_sink = static_cast<IThreadSink*>(sink);
}void IThread::threadCreate()
{if (_is_init){return;}_thread = std::thread(&IThread::_threadTaskInternal, this);_is_init = true;
}
void IThread::threadDestroy()
{if (!_is_init){return;}_setStat(STAT_QUIT);_thread.join();_is_init = false;
}
void IThread::run()
{if (!_is_init){return;}if (_stat_cur == STAT_WAIT || _stat_cur == STAT_PAUSE){_setStat(STAT_RUN);if (_sink){_sink->onThreadRun();}}
}
void IThread::pause()
{if (!_is_init){return;}if (_stat_cur == STAT_RUN){_setStat(STAT_PAUSE);if (_sink){_sink->onThreadPause();}}
}void IThread::_threadTaskInternal()
{if (_sink){_sink->onThreadCreate();}while (1){if ((_stat_cur == STAT_WAIT || _stat_cur == STAT_PAUSE) && _stat_cur == _stat_set){std::this_thread::sleep_for(std::chrono::milliseconds(1));continue;}if (_stat_cur != _stat_set){_stat_cur = _stat_set.load();}if (STAT_QUIT == _stat_cur){break;}if (STAT_WAIT == _stat_cur || STAT_PAUSE == _stat_cur){continue;}if (STAT_RUN == _stat_cur){_sink->onThreadTask();}}if (_sink){_sink->onThreadDestroy();}
}
void IThread::_setStat(ThreadStat stat)
{_stat_set = stat;while (_stat_cur == stat){std::this_thread::sleep_for(std::chrono::milliseconds(1));}
}

3. demo.cpp

#include <iostream>
#include "com_thread.h"class ThreadTestDemo :public IThreadSink
{
public:virtual void onThreadCreate() override{std::cout << "Create" << std::endl;}virtual void onThreadDestroy() override{std::cout << "Destroy" << std::endl;}virtual void onThreadRun() override{std::cout << "Run" << std::endl;}virtual void onThreadPause() override{std::cout << "Pause" << std::endl;}virtual void onThreadTask() override{std::this_thread::sleep_for(std::chrono::milliseconds(100));std::cout << "do task!!!" << std::endl;}void test(){IThread* _thread = new IThread(this);_thread->threadCreate();std::this_thread::sleep_for(std::chrono::milliseconds(1000));for (int i = 0; i < 3; i++){_thread->run();std::this_thread::sleep_for(std::chrono::milliseconds(1000));_thread->pause();std::this_thread::sleep_for(std::chrono::milliseconds(2000));}_thread->threadDestroy();delete _thread;}
};
http://www.risenshineclean.com/news/5598.html

相關(guān)文章:

  • 網(wǎng)站建設(shè)策目標(biāo)安卓優(yōu)化大師全部版本
  • 如何選擇網(wǎng)站公司網(wǎng)絡(luò)銷售平臺有哪些
  • 重慶市建筑工程造價信息網(wǎng)優(yōu)化師是干嘛的
  • 紹興以往網(wǎng)站招工做宣傳推廣的形式有哪些
  • 外貿(mào)做獨立網(wǎng)站怎么樣蘇州seo網(wǎng)站優(yōu)化軟件
  • 制作視頻的軟件手機seo平臺是什么意思
  • 站長網(wǎng)站統(tǒng)計市場營銷實際案例
  • wordpress 注冊鏈接搜索引擎優(yōu)化的主要手段
  • 動態(tài)網(wǎng)站開發(fā)語言企業(yè)網(wǎng)站設(shè)計規(guī)范
  • 網(wǎng)站推廣規(guī)劃百度問答入口
  • 網(wǎng)站流量怎么做的南京網(wǎng)站設(shè)計
  • 開發(fā)利用水資源安徽seo優(yōu)化
  • 網(wǎng)站分為四個步驟開發(fā)建設(shè)百度推廣費用
  • 鄭州網(wǎng)站建設(shè)哪家公司便宜網(wǎng)絡(luò)營銷運營推廣
  • 做趣味圖形的網(wǎng)站seo引擎搜索
  • 網(wǎng)站改版提示無需改版怎么推廣app讓人去下載
  • php怎么做網(wǎng)頁免費seo工具
  • 手機端網(wǎng)站怎么做的今日重大國際新聞軍事
  • 如何做不同域名跳轉(zhuǎn)同一個網(wǎng)站軟文推廣例子
  • 中國知名設(shè)計網(wǎng)站國家職業(yè)技能培訓(xùn)平臺
  • 看守所加強自身網(wǎng)站建設(shè)工作服務(wù)推廣軟文
  • 網(wǎng)站建設(shè)全部流程包括備案免費建站免費網(wǎng)站
  • 做網(wǎng)站優(yōu)化詞怎么選擇電商網(wǎng)站平臺有哪些
  • php網(wǎng)站維護刷關(guān)鍵詞排名
  • 建一個購物網(wǎng)站多少錢吳江seo網(wǎng)站優(yōu)化軟件
  • 百度做的網(wǎng)站能優(yōu)化嗎網(wǎng)站的seo 如何優(yōu)化
  • wordpress 做的網(wǎng)站全球中文網(wǎng)站排名
  • seo網(wǎng)站建設(shè)廈門2022千鋒教育培訓(xùn)收費一覽表
  • 網(wǎng)站制作多少錢?個人網(wǎng)站制作教程
  • 類似情侶空間的網(wǎng)站開發(fā)制作網(wǎng)站平臺