README.md

ArkTS Round Thread Safe Scheduler 示例 一、项目简介

本示例工程基于 OpenHarmony ArkTS,演示了在 不依赖底层线程与高风险并发 API 的前提下,如何通过调度器设计思想实现:

多“任务”对共享数据的安全访问

按“轮次(Round)”有序执行

保证每一轮任务全部完成后再进入下一轮

全流程状态可视化展示

该示例适合作为 ArkTS 并发思想教学示例 / Codelab 示例 / 实验课程项目。

二、设计目标

本项目主要解决以下问题:

多个并发任务同时操作共享数据时,如何避免数据竞争

如何保证:

每一轮任务执行完成

再进入下一轮执行

在 ArkTS 中,如何用结构化调度逻辑替代直接使用底层线程 API

如何将调度过程可视化,便于理解并发执行过程

三、整体架构说明

项目采用 分层 + 职责清晰 的结构设计:

UI(Index.ets) │ ├── Scheduler(调度层) │ ├── RoundScheduler 轮次调度核心 │ ├── ThreadManager 任务管理与派发 │ └── RoundBarrier 轮次完成同步控制 │ ├── Worker(任务层) │ └── IncrementWorker 单个任务逻辑 │ ├── Model(状态层) │ ├── SharedState 共享数据模型 │ ├── RoundState 当前轮次状态 │ └── ThreadLog 执行日志模型 │ └── Utils(工具层) └── Logger 日志统一输出

四、核心思想说明 1️⃣ 轮次调度思想

所有任务按轮次执行

每一轮包含固定数量的任务

必须保证:

当前轮次的所有任务执行完成

才能进入下一轮

该机制在逻辑上等价于“并发系统中的 Barrier”。

2️⃣ 共享数据安全访问

本示例中:

所有任务 不直接修改 UI

所有共享数据封装在 SharedState 中

共享数据的修改 通过调度器统一控制

从结构上避免了数据竞争,而不是依赖底层锁或原子操作。

五、执行流程说明

用户在 UI 页面点击“开始执行”

RoundScheduler 初始化:

轮次数

每轮任务数

调度器创建多个 IncrementWorker

Worker 执行任务逻辑:

读取当前共享值

按规则递增

上报完成状态

RoundBarrier 统计完成情况

当本轮全部完成:

进入下一轮

所有轮次完成后:

输出最终结果

在 UI 中展示执行日志

六、示例效果

实时展示当前轮次

展示共享数据变化过程

显示每个任务的执行顺序

最终结果可验证正确性