|
Name |
|
Date |
Size |
#Lines |
LOC |
| .. | | 17-Mar-2025 | - |
| benchmarks/ | H | 17-Mar-2025 | - | 1,207 | 828 |
| docs/ | H | 17-Mar-2025 | - | 3,670 | 2,631 |
| examples/ | H | 17-Mar-2025 | - | 99 | 70 |
| interfaces/ | H | 17-Mar-2025 | - | 4,153 | 1,634 |
| scripts/ | H | 17-Mar-2025 | - | 82 | 29 |
| src/ | H | 17-Mar-2025 | - | 23,125 | 17,521 |
| test/ | H | 17-Mar-2025 | - | 7,648 | 5,578 |
| tools/ffrt_trace_process/ | H | 17-Mar-2025 | - | 1,589 | 1,185 |
| .clang-format | H A D | 17-Mar-2025 | 8.2 KiB | 201 | 199 |
| .gitignore | H A D | 17-Mar-2025 | 90 | 8 | 8 |
| BUILD.gn | H A D | 17-Mar-2025 | 6.3 KiB | 250 | 226 |
| CMakeLists.txt | H A D | 17-Mar-2025 | 3.5 KiB | 108 | 91 |
| LICENSE | H A D | 17-Mar-2025 | 11.1 KiB | 202 | 169 |
| OAT.xml | H A D | 17-Mar-2025 | 1.5 KiB | 32 | 14 |
| README.md | H A D | 17-Mar-2025 | 3.2 KiB | 76 | 68 |
| RELEASE-NOTES.md | H A D | 17-Mar-2025 | 211 | 5 | 3 |
| bundle.json | H A D | 17-Mar-2025 | 1.8 KiB | 65 | 63 |
| ffrt.gni | H A D | 17-Mar-2025 | 708 | 18 | 17 |
| hisysevent.yaml | H A D | 17-Mar-2025 | 2.2 KiB | 48 | 44 |
| log_ctr_whitelist.conf | H A D | 17-Mar-2025 | 45 | 3 | 3 |
| worker_monitor.conf | H A D | 17-Mar-2025 | 13 | 2 | 2 |
README.md
1# 并发编程框架FFRT
2 - [简介](#简介)
3 - [目录](#目录)
4 - [约束](#约束)
5 - [编译构建](#编译构建)
6 - [linux编译](#linux编译)
7## 简介
8FFRT: Function Flow Runtime, 一种并发编程框架,提供以数据依赖的方式构建异步并发任务的能力;包括数据依赖管理、任务执行器、系统事件处理等。并采用基于协程的任务执行方式,可以提高任务并行度、提升线程利用率、降低系统线程总数;充分利用多核平台的计算资源,保证系统对所有资源的集约化管理。最终解决系统线程资源滥用问题,打造极致用户体验。
9
10功能介绍详见: [FFRT用户指南(docs/user_guide.md)](docs/user_guide.md)
11## 目录
12```
13
14├── benchmarks # 性能对比测试用例
15├── docs # 用户指南
16├── examples # 使用案例
17├── interfaces # 对外接口目录
18│ └── kits
19│ ├── c
20│ └── cpp
21├── scripts
22├── src
23│ ├── core # 依赖管理模块
24│ ├── dfx # 维测功能
25│ │ ├── bbox # 黑匣子功能实现
26│ │ ├── log # 日志功能
27│ │ └── trace # trace功能
28│ ├── eu # 执行单元
29│ ├── internal_inc # 对内接口目录
30│ ├── queue
31│ ├── sched
32│ ├── sync
33│ └── util
34├── test
35└── tools
36 └── ffrt_trace_process
37```
38
39## 约束
40
41## 编译构建
42
43### Linux编译
44 当前ffrt编译依赖三方安全库的功能,需要把三方安全库的代码一并下载到本地。
45 三方安全库代码仓:https://gitee.com/openharmony/third_party_bounds_checking_function
46 注意:在ffrt代码同目录新建文件夹third_party,再将安全库代码放到third_party下,文件夹命名要求为bounds_checking_function.
47 文件结构示意如下:
48```
49
50├── resourceschedule_ffrt
51├── third_party
52│ └── bounds_checking_function
53```
54 再进入到ffrt代码路径下,执行scripts下的sh脚本(sh scripts/run_example.sh)。
55## LOG配置
561. LOG输出函数可以查看头文件ffrt_log_api.h
572. 提供4个日志级别: FFRT_LOG_ERROR = 0, FFRT_LOG_WARN = 1, FFRT_LOG_INFO = 2, FFRT_LOG_DEBUG = 3, 可通过静态编译宏FFRT_LOG_LEVEL来设置日志级别,默认为ERROR
583. 可通过环境变量FFRT_LOG_LEVEL动态设置ffrt日志级别。示例,设置日志DEBUG级别:
59```c
60 export FFRT_LOG_LEVEL=3 //3为FFRT_LOG_DEBUG的值
61```
62
63## Benchmarks
64### 测试场景
651. fork_join:通过构造fork/join执行时间,模拟线程创建和堵塞场景;
662. fib:通过构造斐波那契序列,模拟嵌套调用场景;
673. face_story:通过构造人脸数据,模拟人脸检测场景;
68### 测试方法
69```c
70 cd benchmarks
71 ./benchmarks count //count表明执行次数
72```
73### 测试结果
741. 测试数据和分析归档到benchmarks/output/tag_${stamp}/benchmark_${stamp}.svg,其中stamp是最近一次commit提交时间
752. 测试结果已取平均
76