Go to file
openharmony_ci edb234650c
!547 ProcessWaitedFds nullptr fix
Merge pull request !547 from 董洁/master
2024-11-22 08:40:59 +00:00
benchmarks sync yellow code 2024-07-18 11:30:47 +08:00
docs 修改门禁codecheck问题 2024-11-21 16:52:59 +08:00
examples fix code 2024-10-22 17:40:57 +08:00
interfaces ffrt sync 2024-11-21 09:57:56 +08:00
scripts fix linux complite problem 2024-06-27 10:30:02 +08:00
src !547 ProcessWaitedFds nullptr fix 2024-11-22 08:40:59 +00:00
test sync from openharmony/resourceschedule_ffrt 2024-11-22 14:04:23 +08:00
tools/ffrt_trace_process 同步代码 2023-09-22 10:04:43 +08:00
.autocorrectrc add lint conf file 2024-11-11 21:20:49 +08:00
.clang-format debug定位 2024-11-13 18:30:51 +08:00
.gitignore debug定位 2024-11-13 18:30:51 +08:00
.markdownlint.json add lint conf file 2024-11-11 21:20:49 +08:00
BUILD.gn ffrt sync 2024-11-21 09:57:56 +08:00
bundle.json 协程栈大小支持可配置 2024-09-26 17:47:10 +08:00
CMakeLists.txt serial queue remove timeout cb when task is done 2024-09-24 15:02:44 +08:00
cspell.json 规范md文档README.MD/RELEASE-NOTES.MD/user_guide/cspell 2024-11-21 09:40:05 +08:00
ffrt.gni 协程栈大小支持可配置 2024-09-26 17:47:10 +08:00
hisysevent.yaml debug定位 2024-11-13 18:30:51 +08:00
LICENSE 新增开源license文件 2023-06-13 20:23:51 +08:00
log_ctr_whitelist.conf log打印优化 2024-10-29 15:04:46 +08:00
OAT.xml fix warning 2024-06-03 09:22:02 +08:00
README.md 规范md文档README.MD/RELEASE-NOTES.MD/user_guide/cspell 2024-11-21 09:40:05 +08:00
RELEASE-NOTES.md 规范md文档README.MD/RELEASE-NOTES.MD/user_guide/cspell 2024-11-19 09:34:01 +08:00
worker_monitor.conf Merge branch 'master' of gitee.com:goldenroz/resourceschedule_ffrt into master 2024-07-20 11:13:52 +08:00

并发编程框架 FFRT

简介

FFRT: Function Flow Runtime一种并发编程框架提供以数据依赖的方式构建异步并发任务的能力包括数据依赖管理、任务执行器、系统事件处理等。并采用基于协程的任务执行方式可以提高任务并行度、提升线程利用率、降低系统线程总数充分利用多核平台的计算资源保证系统对所有资源的集约化管理。最终解决系统线程资源滥用问题打造极致用户体验。

功能介绍详见: FFRT 用户指南

目录


├── benchmarks                  # 性能对比测试用例
├── docs                        # 用户指南
├── examples                    # 使用案例
├── interfaces                  # 对外接口目录
│   └── kits
│       ├── c
│       └── cpp
├── scripts
├── src
│   ├── core                    # 依赖管理模块
│   ├── dfx                     # 维测功能
│   │   ├── bbox                # 黑匣子功能实现
│   │   ├── log                 # 日志功能
│   │   └── trace               # trace 功能
│   ├── eu                      # 执行单元
│   ├── internal_inc            # 对内接口目录
│   ├── queue
│   ├── sched
│   ├── sync
│   └── util
├── test
└── tools
    └── ffrt_trace_process

约束

编译构建

Linux 编译

当前 FFRT 编译依赖三方安全库的功能,需要把三方安全库的代码一并下载到本地。

三方安全库代码仓:[third_party_bounds_checking_function]https://gitee.com/openharmony/third_party_bounds_checking_function>

注意:在 FFRT 代码同目录新建文件夹 third_party,再将安全库代码放到 third_party 下,文件夹命名要求为 bounds_checking_function.

文件结构示意如下:


├── resourceschedule_ffrt
├── third_party
│   └── bounds_checking_function

再进入到 ffrt 代码路径下,执行 scripts 下的 shell 脚本 (sh scripts/run_example.sh)。

LOG 配置

  1. LOG 输出函数可以查看头文件 ffrt_log_api.h
  2. 提供 4 个日志级别:FFRT_LOG_ERROR = 0 FFRT_LOG_WARN = 1FFRT_LOG_INFO = 2FFRT_LOG_DEBUG = 3,可通过静态编译宏 FFRT_LOG_LEVEL 来设置日志级别,默认为 ERROR
  3. 可通过环境变量 FFRT_LOG_LEVEL 动态设置 FFRT 日志级别。示例,设置日志 DEBUG 级别:
    export FFRT_LOG_LEVEL=3  # 3 为 FFRT_LOG_DEBUG 的值

Benchmarks

测试场景

  1. fork_join:通过构造 fork/join 执行时间,模拟线程创建和堵塞场景;
  2. fib:通过构造斐波那契序列,模拟嵌套调用场景;
  3. face_story:通过构造人脸数据,模拟人脸检测场景;

测试方法

cd benchmarks
./benchmarks count  # count 表明执行次数

测试结果

  1. 测试数据和分析归档到 benchmarks/output/tag_${stamp}/benchmark_${stamp}.svg,其中 stamp 是最近一次 commit 提交时间
  2. 测试结果已取平均