# 强化线程能力 ## 概述 ### 简介 线程类æä¾›ä¾‹å¦‚å¯åŠ¨çº¿ç¨‹ã€åŒæ¥é€šçŸ¥ã€å¼‚æ¥é€šçŸ¥ç‰åŠŸèƒ½çš„æŽ¥å£ `#include <thread_ex.h>` ## 涉åŠåŠŸèƒ½ ### 接å£è¯´æ˜Ž ### OHOS::Thread |返回值类型 | åç§° | | ------------ | ------------------------------------------------------------ | | | **Thread**()<br/>æž„é€ å‡½æ•°, æž„é€ ä¸€ä¸ªThread对象,但并ä¸ä¼šå¯åŠ¨çº¿ç¨‹ã€‚ | | | virtual **~Thread**()<br/>æžæž„函数 | | ThreadStatus | **Start**(const std::string& name, int32_t priority = THREAD_PROI_NORMAL, size_t stack = 0);<br/>创建并å¯åŠ¨ä¸€ä¸ªå线程,循环执行Run(),当Run()返回falseæˆ–é€šçŸ¥é€€å‡ºæ—¶åœæ¢ã€‚ | | ThreadStatus | **NotifyExitSync**()<br/>åŒæ¥é€šçŸ¥çº¿ç¨‹é€€å‡º,å³é˜»å¡žå¼åœæ¢å线程。<br/>当å‰çº¿ç¨‹è¢«é˜»å¡žï¼Œç‰å¾…å线程结æŸã€‚ | | void | virtual **NotifyExitAsync**()<br/>异æ¥é€šçŸ¥çº¿ç¨‹é€€å‡ºï¼Œå³å线程退出与å¦ä¸é˜»å¡žå½“å‰çº¿ç¨‹ã€‚<br/>通知åçº¿ç¨‹åœæ¢ï¼Œå½“å‰çº¿ç¨‹ç»§ç»è¿è¡Œã€‚ | | bool | virtual **ReadyToWork**()<br/>判æ–线程是å¦å·²ç»å‡†å¤‡å°±ç»ªï¼Œå§‹ç»ˆè¿”回true。 | | bool | **IsExitPending**() const<br/>获å–çº¿ç¨‹é€€å‡ºå¾…å®šæ ‡å¿—ä½ã€‚ | | bool | **IsRunning**() const<br/>判æ–线程是å¦åœ¨è¿è¡Œ | | pthread_t | **GetThread**() const<br/>获å–线程ID | ## 使用示例 1. 测试用例编译è¿è¡Œæ–¹æ³• - 测试用例代ç å‚è§base/test/unittest/common/utils_thread_test.cpp - 使用开å‘者自测试框架,使用方法å‚è§ï¼š[å¼€å‘自测试执行框架-测试用例执行](https://gitee.com/openharmony/testfwk_developer_test#%E6%B5%8B%E8%AF%95%E7%94%A8%E4%BE%8B%E6%89%A7%E8%A1%8C) - 使用以下具体命令以è¿è¡Œ`thread_ex.h`对应测试用例 ```bash run -t UT -tp utils -ts UtilsThreadTest ``` ## 常è§é—®é¢˜ - 主线程对象生命周期终æ¢å‰ï¼Œä¸€å®šè¦è°ƒç”¨NotifyExitSync或NotifyExitAsync终æ¢å线程è¿è¡Œï¼Œå¦åˆ™å线程在主线程对象消亡åŽç»§ç»å·¥ä½œï¼Œè€Œç”±äºŽRun函数由主线程对象真æ£å®žçŽ°ï¼Œæ¤æ—¶ä¸»çº¿ç¨‹å¯¹è±¡æ¶ˆäº¡ï¼ŒRun函数会调用虚基类的纯虚函数而报错。 ```cpp class RealThread : public Thread { // 使用方继承虚基类并实现Run函数 bool Run() override; }; { std::unique_ptr<RealThread> test = std::make_unique<RealThread>(); ThreadStatus status = test->Start("test_thread_01", THREAD_PROI_LOW, 1024); // 创建并å¯åЍå线程对象 test->NotifyExitSync(); // 在test对象生命周期结æŸå‰ï¼Œä¸€å®šè¦ç»ˆæ¢å线程的继ç»è¿è¡Œ } ```