精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

OpenHarmony C++公共基礎類庫應用案例:Thread

系統 OpenHarmony
該程序是基于OpenHarmony的C++公共基礎類庫的線程處理:Thread。該應用案例已在OpenHarmony凌蒙派-RK3568開發板(即OpenHarmony-v3.2.1-release)運行正常。

想了解更多關于開源的內容,請訪問:

51CTO 開源基礎軟件社區

https://ost.51cto.com

一、程序簡介

該程序是基于OpenHarmony的C++公共基礎類庫的線程處理:Thread。

該應用案例已在OpenHarmony凌蒙派-RK3568開發板(即OpenHarmony-v3.2.1-release)運行正常,詳細說明及案例源代碼可參考:https://gitee.com/Lockzhiner-Electronics/lockzhiner-rk3568-openharmony/tree/master/samples/a22_utils_thread。

本案例完成如下工作:

  • 主線程每1秒打印子進程的相關信息。主線程在第5秒時,關閉子線程運行。
  • 創建1個子線程,每隔1秒打印當前運行次數。

二、基礎知識

C公共基礎類庫為標準系統提供了一些常用的C開發工具類,包括:

  • 文件、路徑、字符串相關操作的能力增強接口。
  • 讀寫鎖、信號量、定時器、線程增強及線程池等接口。
  • 安全數據容器、數據序列化等接口。
  • 各子系統的錯誤碼相關定義。

1、添加C++公共基礎類庫依賴

修改需調用模塊的BUILD.gn,在external_deps或deps中添加如下:

ohos_shared_library("xxxxx") {
  ...
  external_deps = [
    ...
    # 動態庫依賴(可選)
    "c_utils:utils",
    # 靜態庫依賴(可選)
    "c_utils:utilsbase",
    # Rust動態庫依賴(可選)
    "c_utils:utils_rust",
  ]
  ...
}

一般而言,我們只需要填寫"c_utils:utils"即可。

2、Thread頭文件

本案例主要說明線程類提供的相關接口,例如:啟動線程、同步通知、異步通知等功能的接口。

C++公共基礎類庫的Thread頭文件在://commonlibrary/c_utils/base/include/thread_ex.h

可在源代碼中添加如下:

#include <thread_ex.h>

命令空間如下:

OHOS::Thread

3、OHOS::Thread接口說明

thread_ex.h定義Thread類,該類負責定義Thread類以及相關接口。

(1)Thread

構造函數, 構造一個Thread對象,但并不會啟動線程。

Thread();

(2)、~Thread

析構函數。

virtual ~Thread();

(3)Start

創建并啟動一個子線程,循環執行Run(),當Run()返回false或通知退出時停止。

ThreadStatus Start(const std::string& name, int32_t priority = THREAD_PROI_NORMAL, size_t stack = 0);

參數說明:

返回值說明:

(4)NotifyExitSync

同步通知線程退出,即阻塞式停止子線程。當前線程被阻塞,等待子線程結束。

ThreadStatus NotifyExitSync();

返回值說明:

(5)NotifyExitAsync

異步通知線程退出,即子線程退出與否不阻塞當前線程。通知子線程停止,當前線程繼續運行。

virtual void NotifyExitAsync();

(6)ReadyToWork

判斷線程是否已經準備就緒,始終返回true。

virtual bool ReadyToWork();

返回值說明:

(7)IsExitPending

獲取線程退出待定標志位。

bool IsExitPending() const;

返回值說明:

(8)IsRunning

判斷線程是否在運行。

bool IsRunning() const;

返回值說明:

(9)GetThread

獲取線程ID。

pthread_t GetThread() const;

(10)Run

需重寫Run函數,該部分為用戶需要運行的代碼。

virtual bool Run() = 0;

三、程序解析

1、創建編譯引導

在//vendor/lockzhiner/rk3568/samples/BUILD.gn文件添加一行編譯引導語句。

import("http://build/ohos.gni")

group("samples") {
  deps = [
    "a23_utils_thread:utils_thread",	# 添加該行
  ]
}

"a23_utils_thread:utils_thread",該行語句表示引入utils_thread 參與編譯。

2、創建編譯項目

創建a23_utils_thread 目錄,并添加如下文件:

a23_utils_thread
├── utils_thread_sample.cpp				# .cpp源代碼
├── BUILD.gn							# GN文件

3、創建BUILD.gn

編輯BUILD.gn文件。

import("http://build/ohos.gni")
ohos_executable("utils_thread") {
  sources = [ "utils_thread_sample.cpp" ]
  include_dirs = [ 
      "http://commonlibrary/c_utils/base/include",
      "http://commonlibrary/c_utils/base:utils",
      "http://third_party/googletest:gtest_main",
      "http://third_party/googletest/googletest/include"
  ]
  external_deps = [
    "c_utils:utils"
  ]
  part_name = "product_rk3568"
  install_enable = true
}

注意:

BUILD.gn中所有的TAB鍵必須轉化為空格,否則會報錯。如果自己不知道如何規范化,可以:

# 安裝gn工具
sudo apt-get install ninja-build
sudo apt install generate-ninja
# 規范化BUILD.gn
gn format BUILD.gn

4、創建源代碼

utils_thread_sample.cpp主要功能分別是:

  • 聲明子線程類
  • 子線程每1秒打印一段信息
  • 主程序每1秒打印子進程相關信息,第5秒時關閉子進程,再打印5秒的子進程相關信息

具體內容如下:

(1)編寫子線程類

自定義ThreadSample類,繼承OHOS::Thread類。

具體代碼如下:

class ThreadSample : public OHOS::Thread {
public:
    ThreadSample() : OHOS::Thread::Thread()
    {
    }
    ~ThreadSample()
    {
    }

protected:
    bool Run() override;
};

注意:

  • 構造函數ThreadSample()必須執行OHOS::Thread的構造函數,否則無效。
  • Run()函數為開發者需要重寫的函數。該函數為開發者需要啟動線程執行的代碼。
  • Run()函數必須添加override關鍵字,表示要重寫該函數。

(2)重寫ThreadSample::Run()函數

Run()函數每1秒打印一段信息。

具體代碼如下:

bool ThreadSample::Run()
{
    static int current = 0;

    current++;
    cout << "Run(): current = " << current << endl;
    sleep(1);

    return true;
}

注意:

  • OHOS::Thread類會不斷地調用Run()函數,所以該函數只需要寫成單循環即可。

(3)主程序

主程序每1秒打印子進程相關信息,第5秒時關閉子進程,再打印5秒的子進程相關信息。

定義ThreadSample對象并啟用。

int main(int argc, char **argv)
{
    ThreadSample thread;

    // 啟動線程
    thread.Start("thread sample", OHOS::THREAD_PROI_NORMAL, 0);
    ......
}

查看子線程的相關數據。

for (int i = 0; i < (2 * FORMAX); i++) {
    cout << "main: i = " << i << endl;
    cout << "   ThreadId   = " << thread.GetThread() << endl;
    cout << "   ReadyToWork = " << thread.ReadyToWork() << endl;
    cout << "   IsExitPending = " << thread.IsExitPending() << endl;
    cout << "   IsRunning = " << thread.IsRunning() << endl;
    ......
    sleep(1);
}

第5秒后發起異步關閉子線程。

for (int i = 0; i < (2 * FORMAX); i++) {
    ......
    if (i == (1 * FORMAX)) {
        // 異步停止線程,不用等待,直接返回
        cout << "main: NotifyExitAsync" << endl;
        thread.NotifyExitAsync();
    }
    ......
    sleep(1);
}

注意:NotifyExitAsync()是異步關閉線程,在此并沒有關閉線程。

同步等待子進程關閉。

thread.NotifyExitSync();

注意:NotifyExitSync()是同步關閉線程,在此需要等待線程關閉才會返回。

四、運行程序

系統啟動后,運行命令:

utils_thread

五、運行結果

運行結果:

# utils_thread
main: i = 0
   ThreadId   = 4154539380
   ReadyToWork = 1
   IsExitPending = 0
   IsRunning = 1
Run():
main: i = 1
   ThreadId   = 4154539380
   ReadyToWork = 1
   IsExitPending = 0
   IsRunning = Run(): 1

main: i = 2
   ThreadId   = 4154539380
   ReadyToWork = 1
   IsExitPending = 0
   IsRunning = 1
Run():
main: i = 3
   ThreadId   = Run():
4154539380
   ReadyToWork = 1
   IsExitPending = 0
   IsRunning = 1
Run(): 
main: i = 4
   ThreadId   = 4154539380
   ReadyToWork = 1
   IsExitPending = 0
   IsRunning = 1
Run(): 
main: i = 5
   ThreadId   = 4154539380
   ReadyToWork = 1
   IsExitPending = 0
   IsRunning = 1
Run(): 
main: i = 6
   ThreadId   = 4154539380
   ReadyToWork = 1
   IsExitPending = 0
   IsRunning = 1
Run(): 
main: i = 7
   ThreadId   = 4154539380
   ReadyToWork = 1
   IsExitPending = 0
   IsRunning = 1
Run(): 
main: i = 8
   ThreadId   = 4154539380
   ReadyToWork = 1
   IsExitPending = 0
   IsRunning = 1
Run(): 
main: i = 9
   ThreadId   = 4154539380
   ReadyToWork = 1
   IsExitPending = 0
   IsRunning = 1
Run(): 
main: i = 10
   ThreadId   = 4154539380
   ReadyToWork = 1
   IsExitPending = 0
   IsRunning = 1
main: NotifyExitAsync
main: i = 11
   ThreadId   = 4294967295
   ReadyToWork = 1
   IsExitPending = 1
   IsRunning = 0
main: i = 12
   ThreadId   = 4294967295
   ReadyToWork = 1
   IsExitPending = 1
   IsRunning = 0
main: i = 13
   ThreadId   = 4294967295
   ReadyToWork = 1
   IsExitPending = 1
   IsRunning = 0
main: i = 14
   ThreadId   = 4294967295
   ReadyToWork = 1
   IsExitPending = 1
   IsRunning = 0
#

想了解更多關于開源的內容,請訪問:

51CTO 開源基礎軟件社區

https://ost.51cto.com

責任編輯:jianghua 來源: 51CTO 開源基礎軟件社區
相關推薦

2009-08-04 17:08:12

C# Thread類

2010-02-03 16:04:34

C++標準類庫

2010-01-21 11:03:07

C++庫

2010-02-04 16:58:29

C++類庫

2010-02-04 13:45:36

C++類模板

2010-02-01 17:31:06

C++類成員

2011-07-15 00:47:13

C++多態

2011-07-14 17:45:06

CC++

2011-07-13 18:24:18

C++

2011-05-18 17:33:15

CC++

2010-02-01 17:37:35

C++調用C鏈接庫

2010-01-21 13:33:44

C++基類

2020-07-30 12:40:35

CC++編程語言

2023-04-07 09:20:55

2010-01-15 19:49:04

C++類庫

2010-01-15 19:49:04

C++類庫

2010-01-28 13:27:12

C++類定義

2010-01-19 10:29:41

C++類庫

2022-03-02 16:08:31

Harmony應用開發鴻蒙

2010-01-15 18:35:25

C++的類
點贊
收藏

51CTO技術棧公眾號

亚洲婷婷免费| 欧美中文字幕精在线不卡| 国产精品性做久久久久久| 久久久久久久电影一区| 极品粉嫩小仙女高潮喷水久久| 成人日韩在线| 洋洋成人永久网站入口| 欧洲久久久久久| 国内毛片毛片毛片毛片| 国产精品乱看| 久久久国产精品视频| 国产精品久久不卡| 91精品亚洲一区在线观看| 五月综合激情日本mⅴ| 亚洲一区二区三区精品在线观看 | 欧美日韩国产亚洲一区| 亚洲人成在线播放| 亚洲少妇一区二区三区| 成人黄页网站视频| 天天影视色香欲综合网老头| 中文字幕一区二区三区四区五区 | 日韩中文字幕高清| 国产精品自偷自拍| 欧美爱爱视频| 亚洲第一综合色| 亚洲 国产 欧美一区| 国产福利第一视频| 美国三级日本三级久久99| 午夜精品久久久久久久久久久久久| 97在线观看免费视频| 欧美日韩一区二区三区在线电影| 欧美精品丝袜中出| 黄色一级大片在线观看| 3344国产永久在线观看视频| 中文字幕一区二区在线播放 | 国内精品久久久久久久久久久 | 午夜福利理论片在线观看| 韩国午夜理伦三级不卡影院| 日本久久久久久久久久久| 国产精品1000| 欧美性色综合| 欧美精品在线第一页| 91香蕉国产视频| 国模吧精品视频| 亚洲男人天天操| 国产制服丝袜在线| 欧美a级网站| 日韩av在线播放资源| 亚洲av熟女高潮一区二区| 91欧美日韩在线| 日韩欧美中文一区| 免费观看污网站| 一区视频网站| 精品久久国产97色综合| 扒开伸进免费视频| 欧美人体视频| 亚洲精品中文字幕女同| 中文字幕国产综合| 精品欧美激情在线观看| 一区二区三区动漫| 久久精品色妇熟妇丰满人妻| 欧美gay男男猛男无套| www亚洲欧美| 国产suv一区二区三区| 欧美精品福利| 午夜精品一区二区三区在线视| 日韩三级免费看| 男人的天堂亚洲在线| 国产精品久久久久免费a∨大胸| 无码人妻久久一区二区三区| 免费精品视频最新在线| 国产综合在线观看视频| 性做久久久久久久| 91免费国产在线观看| 日韩免费毛片| 黄色一级片在线观看| 夜夜操天天操亚洲| 爱福利视频一区二区| 在线成人视屏| 欧美一二三区在线观看| 国产精品无码午夜福利| 日韩一级毛片| 久久久久久久久久久免费 | 91久久线看在观草草青青| 国产嫩草在线观看| 久久久91麻豆精品国产一区| 日韩大陆欧美高清视频区| caopeng视频| 91精品秘密在线观看| 91高清在线免费观看| 黄色av一区二区| 国产成人免费av在线| 九色91在线视频| 永久av在线| 午夜伦欧美伦电影理论片| 三级在线视频观看| 大桥未久女教师av一区二区| 尤物yw午夜国产精品视频明星| 久久激情免费视频| 久久婷婷影院| 成人欧美一区二区三区在线观看 | 久久精品日韩一区二区三区| 免费久久久久久| 大胆人体一区| 日韩欧美激情一区| 国产真人做爰视频免费| 影院欧美亚洲| 国产日韩欧美在线视频观看| 欧美自拍偷拍第一页| 国产精品国产馆在线真实露脸 | 91av一区| 日韩福利视频在线观看| 中文字幕手机在线观看| 日韩成人伦理电影在线观看| 国产精品一级久久久| 免费大片在线观看www| 日韩欧美高清视频| 国产ts在线观看| 久久国产中文字幕| 国产精品91免费在线| 免费av一级片| 亚洲伦理在线精品| 中文字幕亚洲乱码| 国产探花一区在线观看| 97人人爽人人喊人人模波多 | 久久电影tv| 精品国免费一区二区三区| 永久免费看片视频教学| 日韩二区在线观看| 麻豆传媒一区| 国产福利片在线观看| 精品国产免费一区二区三区香蕉| 天天色天天综合| 蜜臀av亚洲一区中文字幕| 鲁鲁狠狠狠7777一区二区| 91精品国产黑色瑜伽裤| 精品国产1区二区| 五月天丁香激情| 国产又粗又猛又爽又黄91精品| 亚洲ai欧洲av| 中国色在线日|韩| 日韩va亚洲va欧洲va国产| 亚洲精品1区2区3区| 成人av片在线观看| 国产白丝袜美女久久久久| 欧美黑人巨大videos精品| 欧美激情视频网| 日韩在线观看视频一区二区三区| 一区二区三区在线观看欧美| 国产精品一级无码| 狠狠色综合网| 精品视频一区二区三区四区| 色戒汤唯在线观看| 亚洲欧美国产va在线影院| 免费的毛片视频| 欧美国产一区二区在线观看| 欧美黄色性生活| 久久精品国产大片免费观看| 国产免费一区二区三区在线能观看| 成人一区二区不卡免费| 欧美影视一区在线| 一区二区三区影视| 国产精品1区二区.| 国产二区视频在线| 欧美日日夜夜| 国产精品日韩久久久久| 18av在线视频| 亚洲国产精品免费| 日韩综合在线观看| 中文字幕一区二区视频| 国产又黄又嫩又滑又白| 宅男噜噜噜66国产日韩在线观看| 中文字幕一区二区三区色视频 | 日韩一区二区精品| 欧美日韩精品亚洲精品| 99久久夜色精品国产网站| 日韩视频第二页| 97视频热人人精品免费| 91偷拍精品一区二区三区| 蜜桃av在线| 日韩日本欧美亚洲| 亚洲精品久久久蜜桃动漫| 欧美色欧美亚洲高清在线视频| 一级特黄曰皮片视频| 国产精品一区在线| av动漫免费看| 亚洲天天综合| 欧美激情视频一区二区三区| 亚州欧美在线| 欧美性受xxxx白人性爽| 日韩精品黄色| 日韩电影免费在线观看中文字幕 | 懂色av一区| 亚洲图片在线综合| 精品二区在线观看| 日韩欧美第一页| 加勒比av在线播放| 国产亚洲自拍一区| 一区二区三区四区影院| 日韩电影网1区2区| 农民人伦一区二区三区| 欧美一区二区三| 国产精品视频一区二区三区经| 另类中文字幕国产精品| 欧美高清第一页| 国产爆初菊在线观看免费视频网站| 日韩无一区二区| 在线观看免费中文字幕| 婷婷综合另类小说色区| 色哟哟一一国产精品| 国产亚洲综合性久久久影院| 免费不卡的av| 国产精品自产自拍| 成人性生交免费看| 久久男女视频| www.日本在线播放| 欧美va亚洲va日韩∨a综合色| 日韩在线国产| 久久av超碰| 精品视频免费观看| 精品国产导航| 99精品国产高清一区二区| 天堂久久一区| 国产精品免费观看在线| 欧美专区福利免费| 91a在线视频| www.youjizz.com在线| 欧美大片大片在线播放| 超碰porn在线| 久久亚洲精品成人| 国产婷婷视频在线| 久久精品视频va| 无遮挡的视频在线观看| 最近2019中文字幕mv免费看| 高清日韩av电影| 亚洲视频国产视频| 黄色av网站在线看| 国产亚洲一区二区在线| 日本成人一区| 亚洲欧美在线免费观看| 欧美一区二区三区少妇| 亚洲欧洲在线免费| 精品视频二区| 在线播放国产精品| 男女啪啪在线观看| 久久综合国产精品台湾中文娱乐网| 欧美a在线看| 欧美大肥婆大肥bbbbb| 在线看三级电影| 久国内精品在线| 国模私拍视频在线播放| 国内外成人免费激情在线视频网站| gogo高清午夜人体在线| 55夜色66夜色国产精品视频| japanese23hdxxxx日韩| 国产精品久久久久久久久久东京| 久久亚洲国产精品尤物| 成人免费网视频| 2021年精品国产福利在线| 国产高清在线精品一区二区三区| 欧美不卡在线观看| 国产精品一级久久久| 亚洲三级网页| 天堂va久久久噜噜噜久久va| 99精品电影| 99久久免费观看| 国产精品日韩精品欧美精品| 国产熟人av一二三区| 久久se精品一区精品二区| 女王人厕视频2ⅴk| 91亚洲精品一区二区乱码| av男人的天堂av| 亚洲欧美激情一区二区| 日本少妇毛茸茸高潮| 91久久久免费一区二区| 99久久国产免费| 精品中文视频在线| 97视频精彩视频在线观看| 欧美成人免费全部| 亚洲黄色网址| 成人免费午夜电影| 欧洲在线一区| 综合久久国产| 亚洲作爱视频| 青青草久久伊人| jizz一区二区| 国产黄a三级三级| 午夜视频一区二区三区| 最新在线中文字幕| 欧美成人video| 在线观看国产原创自拍视频| 欧美大荫蒂xxx| yiren22亚洲综合| 国产色综合一区二区三区| 日韩精品一区二区三区免费观影 | 六月婷婷色综合| 少妇被狂c下部羞羞漫画| 国产精品久久毛片| 中文字幕在线观看免费视频| 欧美另类videos死尸| 无码国产精品高潮久久99| 久久精品一区中文字幕| 亚洲天堂手机| av一区二区三区免费| 欧美偷拍自拍| 男人日女人逼逼| 国产麻豆精品在线观看| 性猛交娇小69hd| 午夜激情综合网| 精品久久国产视频| 色爱av美腿丝袜综合粉嫩av| www.日韩| 国产精品一国产精品最新章节| 亚洲成人日韩| 亚洲欧美日韩一级| 久久综合国产精品| 日韩成人高清视频| 日韩限制级电影在线观看| 亚洲乱亚洲乱妇| 国产精品男女猛烈高潮激情| 亚欧日韩另类中文欧美| 久久久久免费看黄a片app| 国产一区二区调教| 精品无码一区二区三区蜜臀| 欧美图片一区二区三区| 久久米奇亚洲| 1769国内精品视频在线播放| 久久久久观看| 成年人网站国产| 成人黄色一级视频| 欧美成人一区二区三区高清| 777午夜精品视频在线播放| h网站视频在线观看| 国产精品久久久久免费a∨大胸| 一区二区三区四区在线看| 日韩av黄色网址| 26uuu欧美| www.国产色| 亚洲乱码国产乱码精品精| 午夜av不卡| 欧美高清性xxxxhd| 久久久久久久尹人综合网亚洲| 久久国产精品影院| 91国产福利在线| 国产免费av在线| 国产精品自产拍在线观看中文| 操欧美老女人| 99国产精品久久久久久| 亚洲欧美日韩国产综合在线| 国产免费一区二区三区最新不卡| 久久在精品线影院精品国产| 国产一区2区在线观看| 亚洲欧美日韩不卡| 国产成人午夜片在线观看高清观看| 欧美精品99久久久| 亚洲国产精品va在线看黑人动漫| а√天堂8资源中文在线| 久久久久久九九九九| 日韩av电影天堂| 老熟妇高潮一区二区三区| 日韩一区二区三区四区| 国产蜜臀在线| 久久综合狠狠综合久久综青草| 每日更新成人在线视频| 国产午夜精品福利视频| 91精品国产综合久久蜜臀| 青青草原国产在线| 精品欧美日韩| 日本sm残虐另类| www.99re7| 日韩电影中文字幕av| 成人国产一区| 加勒比海盗1在线观看免费国语版| 成人性视频网站| 香蕉影院在线观看| 久久精品国产亚洲精品2020| 亚洲欧美日本国产| 日本黄网站免费| 亚洲欧美一区二区在线观看| 色噜噜一区二区三区| 国产精品久久视频| 欧美特黄a级高清免费大片a级| 国产传媒第一页| 日韩一区二区影院| 日韩不卡免费高清视频| 日韩国产精品毛片| www久久精品| 国产精品呻吟久久| 欧美尤物巨大精品爽| 国产精品传媒精东影业在线| 国产原创剧情av| 欧美猛男男办公室激情| 欧亚在线中文字幕免费| 黑人巨大国产9丨视频| 26uuu国产一区二区三区| 国产精品高潮呻吟AV无码| 欧美在线www| 欧美91福利在线观看| av电影网站在线观看| 日韩欧美国产小视频|