精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

亚洲中无吗在线| 国产三级视频在线| 女同性一区二区三区人了人一| 正在播放亚洲一区| www.xxx麻豆| 全色精品综合影院| 久久人体视频| 国产又粗又猛又黄视频| 久久久av水蜜桃| 亚洲欧洲一区二区三区| 伊人久久亚洲综合| 日本wwww视频| 精品一区二区三区四区在线| 影音先锋日韩精品| 在线亚洲欧美日韩| 中文字幕精品一区日韩| 精品视频免费在线播放| 欧美日韩在线精品一区二区三区激情综 | 亚洲免费av一区二区三区| 亚洲高清免费观看高清完整版在线观看| 亚洲图片中文字幕| 国产丝袜不卡| 欧美精品日韩精品| 白白色亚洲国产精品| 亚洲视频在线不卡| 亚洲国产成人精品久久久国产成人一区 | 久久久久久久久久久久久久久久久| 精品国偷自产在线视频99| 婷婷综合一区| 黑人操日本美女| 久久精彩免费视频| 国产成人自拍网| 黄网站在线播放| 精品国产av色一区二区深夜久久| 91国产高清在线| 欧美顶级毛片在线播放| www.四虎成人| 亚洲国产一区二区视频| 成人看片在线观看| fc2成人免费视频| 久久久久久亚洲精品不卡| 久久婷婷色综合| 国产精品999在线观看| 一区二区三欧美| 日韩一级在线| 亚洲国产精品久久久久爰性色 | 欧美aaaxxxx做受视频| 国产美女直播视频一区| 国产精品久久久久精k8| a级日韩大片| 午夜国产福利一区二区| 成人黄色在线免费| 黑丝一区二区| 国产av精国产传媒| 日本精品一区二区三区高清 久久 日本精品一区二区三区不卡无字幕 | 亚洲一区二区精品久久av| 亚洲有吗中文字幕| 精品露脸国产偷人在视频| 亚洲一卡二卡区| 国产98在线| 久久久影视传媒| 秋霞久久久久久一区二区| 午夜在线视频免费| 99re热这里只有精品免费视频| 成人免费视频网站入口| www.日本在线观看| 国产激情一区二区三区四区| 3d动漫啪啪精品一区二区免费| 国产男男gay网站| 国产成人av一区二区三区在线| 91青青草免费观看| 黑人精品一区二区| 亚洲精品亚洲人成在线观看| 精品电影一区二区三区| 欧产日产国产精品98| 欧美日韩大片免费观看| 亚洲欧美第一页| 亚洲av毛片基地| 婷婷亚洲五月色综合| 操日韩av在线电影| 精品无码久久久久| 久久精品麻豆| 国产精品欧美一区二区| 国产欧美熟妇另类久久久 | 久久久精品免费网站| 神马一区二区影院| 国产精品污视频| 国产成人综合亚洲网站| 久久国产精品99久久久久久丝袜| 蝌蚪视频在线播放| 日韩一区在线播放| 老太脱裤让老头玩ⅹxxxx| 成人欧美大片| 在线观看91av| 国产麻豆剧传媒精品国产av| 久久不卡国产精品一区二区| 精品国产自在精品国产浪潮| 国产真实乱偷精品视频| 日韩精品影视| 欧美肥婆姓交大片| 99精品人妻国产毛片| 激情成人综合网| 国产中文一区二区| 麻豆视频在线观看免费| 国产精品久久久久久久久久10秀 | 韩日成人在线| av在线私库| 国产一级大片在线观看| 日韩三级电影免费观看| 在线观看日韩视频| 偷拍一区二区三区| 97久久人人超碰| 欧美日韩精选| 韩国av免费在线观看| 欧美黑人性猛交xxx| 日本黄色www| 成人精品视频在线播放| 青青影院一区二区三区四区| 1769国内精品视频在线播放| 午夜激情一区二区三区| 国产亚洲精品久| 日韩va欧美va亚洲va久久| 亚洲伦理网站| 国产免费av高清在线| 天堂网av手机版| 国产精品美女网站| 中文字幕一区在线| 奇米色777欧美一区二区| 欧美18免费视频| 国产在线视频网| 四虎国产精品免费久久5151| 色悠久久久久综合欧美99| 日本xxxx免费| 在线中文免费视频| 欧美性猛片aaaaaaa做受| 污片免费在线观看| 国产一区美女| 91一区二区三区| 精品麻豆一区二区三区| 欧美丝袜第三区| 国产jjizz一区二区三区视频| 亚洲深夜影院| 欧美一区深夜视频| 午夜一区二区三区四区| 99久久精品国产毛片| 久久久久久www| 66精品视频在线观看| 欧美精品一区二区三区一线天视频 | 老司机在线精品视频| 欧美日韩在线播放三区四区| 三级网站在线免费观看| 美女国产一区| 欧美成人一区二区在线| 午夜不卡影院| 亚洲欧美日韩成人| jizz国产在线观看| 国产性天天综合网| 污污的网站18| 亚洲成av人片一区二区密柚| 亚洲aⅴ男人的天堂在线观看| 看黄网站在线| 91精品国产综合久久精品app| 欧美卡一卡二卡三| 高清不卡在线观看av| 97超碰人人澡| 国产成人ay| 亚洲欧美日韩精品久久亚洲区| 日本一区二区三区精品| 国产午夜精品福利| 天天影视综合色| 97视频热人人精品免费| 91精品视频大全| 午夜性色福利视频| 大桥未久av一区二区三区| 一道本在线观看| 久久99国产精品久久| 久久综合久久综合这里只有精品| 伊人色综合一区二区三区影院视频| 亚洲欧美激情一区| 在线观看黄色国产| 亚洲免费视频中文字幕| 成人性生活免费看| 天堂va蜜桃一区二区三区| 国产精品免费在线播放| 在线视频超级| 久久精品电影网| 头脑特工队2在线播放| 欧美性猛交xxxx乱大交退制版 | 国产天堂在线播放| 给我免费播放日韩视频| 国产69精品久久久久久| 午夜免费福利在线观看| 精品少妇一区二区三区日产乱码 | 欧美一区二区在线观看| 日韩三级小视频| 国产精品萝li| 日本黄色免费观看| 九色|91porny| 国产一区亚洲二区三区| 雨宫琴音一区二区三区| 欧美日韩在线高清| 97一区二区国产好的精华液| 国产精品91在线| 狂野欧美性猛交xxxxx视频| 日韩第一页在线| 精品国产av 无码一区二区三区| 亚洲va国产va欧美va观看| 四虎影视一区二区| 91免费观看视频在线| 久久精品一二三四| 日本视频一区二区三区| 国产午夜福利100集发布| 欧美hd在线| 欧美一二三区| 国产suv精品一区| 亚洲一区二区在线播放| 亚洲日本网址| 2019中文字幕在线| 女囚岛在线观看| 久久久国产一区二区三区| 九色视频在线播放| 亚洲精品久久久久中文字幕欢迎你| 96亚洲精品久久久蜜桃| 在线亚洲高清视频| 久久国产视频播放| 亚洲一区二区三区四区在线观看| 在线视频这里只有精品| 久久精品欧美日韩精品| 精品国产av色一区二区深夜久久| 国产高清不卡二三区| 国产美女18xxxx免费视频| 日韩精品水蜜桃| 国产欧美亚洲日本| 亚洲精品一区二区三区在线| 国产精品免费看久久久香蕉| 色天使综合视频| 国产精品黄色av| xx欧美视频| 2018中文字幕一区二区三区| 888av在线视频| 久久久久国产精品免费网站| 青青在线视频| 欧美激情视频一区二区| 超碰在线免费播放| 蜜臀久久99精品久久久久久宅男| 黄色免费在线观看网站| 精品久久久91| av网站在线免费看推荐| 久久香蕉频线观| 国产在线激情| 乱亲女秽乱长久久久| 亚洲国产精品精华素| 欧美高清自拍一区| sqte在线播放| 97免费视频在线| 中老年在线免费视频| 日韩av成人在线观看| 国产一区二区主播在线| 亚洲一区二区三区在线看| 久久视频在线观看中文字幕| 乱亲女h秽乱长久久久| 精品国产一区二区三区久久久久久| 成人h动漫精品一区二区器材| 国产精品自拍首页| 亚洲婷婷影院| 日韩三级电影网站| 91精品高清| 国产美女主播在线| 一本色道久久综合亚洲精品不| 成人免费观看cn| 日韩在线播放一区二区| 日韩在线一区视频| 国产a久久麻豆| 国产熟妇搡bbbb搡bbbb| 欧美国产精品久久| 国产精品视频一区二区三 | 成人国产精品一区二区免费麻豆 | 97精品人妻一区二区三区| 欧美一区二区三区电影| 三级在线观看网站| 国产一区二区久久精品| caopeng在线| 97在线精品视频| 草莓视频成人appios| 91精品视频在线看| 狼人精品一区二区三区在线| 亚洲第一导航| 国产精品va| 国产wwwxx| 豆国产96在线|亚洲| 久久久视频6r| 亚洲午夜久久久| 亚洲中文无码av在线| 日韩亚洲欧美综合| 国产在线三区| 韩国精品久久久999| 粉嫩一区二区三区| 国产厕所精品在线观看| 国产一区二区三区四区五区传媒| 精品国产一区二区三区在线| 精品在线播放| 91香蕉视频网址| 麻豆91精品| 国产精品欧美性爱| 国产精品久久久久久久久久免费看 | 开心激情综合网| 中文字幕综合在线| h视频网站在线观看| 亚洲精品在线免费播放| www亚洲人| 97超碰国产精品女人人人爽| 台湾天天综合人成在线| 快播日韩欧美| 国内精品久久久久久久影视麻豆| 中文字幕第80页| 97久久超碰精品国产| 美女福利视频在线观看| 欧美日韩国产电影| 国产福利小视频在线| 午夜精品一区二区三区av| 国产免费区一区二区三视频免费| 欧洲av一区| 亚洲影院免费| 日韩www视频| 亚洲午夜激情网页| 国产美女主播在线观看| 色一区av在线| 久久亚洲精品爱爱| 欧美动漫一区二区| 国产人成精品一区二区三| zjzjzjzjzj亚洲女人| 中文字幕亚洲成人| 91国内精品视频| 在线电影欧美日韩一区二区私密| 成人欧美大片| 蜜桃传媒视频第一区入口在线看| 影院欧美亚洲| 四虎精品一区二区| 伊人激情综合| 九九综合九九综合| 国产乱国产乱老熟300| 狠狠噜噜久久| 欧美诱惑福利视频| 亚洲国产无码精品| 欧美国产激情一区二区三区蜜月| 亚洲精品国产精品乱码| 亚洲国产另类久久精品| 国产天堂在线播放视频| 动漫3d精品一区二区三区| 欧美日韩天堂| 国产高清成人久久| 五月婷婷久久丁香| 婷婷在线免费视频| 8090成年在线看片午夜| 日韩欧美在线精品| 激情视频综合网| 国产精品日韩精品欧美在线| 亚洲最新av网站| 理论片在线不卡免费观看| 精品视频一区二区三区在线观看| 最新视频 - x88av| 国产91精品在线观看| 欧美另类一区二区| 亚洲天堂男人天堂| 欧美久久久网站| 国产精品色悠悠| 99久久激情| 91精品人妻一区二区三区蜜桃2| 亚洲图片欧美色图| 精品欧美不卡一区二区在线观看 | 国产在线综合网| 亚洲黄色www| 日本一区免费网站| 欧美日韩一区二区三区电影| 国产精品1区二区.| 久久国产黄色片| 色噜噜国产精品视频一区二区| 国产免费区一区二区三视频免费| 国产在线视频在线| 久久综合成人精品亚洲另类欧美 | 国产拍在线视频| 日韩欧美视频一区二区三区四区 | 色婷婷亚洲精品| 免费黄色在线| 九色综合日本| 久久99蜜桃精品| 精品成人免费视频| 中文字幕欧美国内| 国产乱论精品| 好男人www社区| 亚洲免费观看高清完整版在线观看熊| 特黄aaaaaaaaa真人毛片| 国产精品久久久久久久久久东京| 欧美日本中文| 国产91丝袜美女在线播放| 日韩三级中文字幕| 91精品论坛| 六月婷婷激情综合| 国产精品天美传媒沈樵| 无码精品在线观看|