更新多线程文档

This commit is contained in:
SmallMain 2024-11-01 11:33:38 +08:00
parent 07e4db41a3
commit a066f2edc6
No known key found for this signature in database
9 changed files with 70 additions and 8 deletions

View File

@ -98,7 +98,17 @@ Label 一直是项目优化的最难点,因为它完全不能和其它的渲
### 多线程支持 ### 多线程支持
现在,引擎的部分系统增加了多线程支持,启用后可以释放其对主线程的占用,减少卡顿现象。 现在,以下引擎的部分增加了多线程支持:
- 资源管线(下载与缓存部分)
- 音频系统
启用后可以释放其对主线程的占用,减少卡顿现象。
并且在微信小游戏平台下还有以下改进:
- 默认启用网络接口和音频接口的高性能模式
- 网络接口支持 HTTP/2、HTTP/3(QUIC) 协议
## 演示 ## 演示

View File

@ -100,6 +100,16 @@ Spine 组件现在不仅可以参与动态合图,还能与其他渲染组件
## 启用多线程支持 ## 启用多线程支持
社区版为引擎的部分系统增加了多线程支持,启用后可以释放其对主线程的占用,减少卡顿现象。 现在,以下引擎的部分增加了多线程支持:
- 资源管线(下载与缓存部分)
- 音频系统
启用后可以释放其对主线程的占用,减少卡顿现象。
并且在微信小游戏平台下还有以下改进:
- 默认启用网络接口和音频接口的高性能模式
- 网络接口支持 HTTP/2、HTTP/3(QUIC) 协议
详情请阅读文档:[多线程支持](../user-guide/multithread/thread-intro)。 详情请阅读文档:[多线程支持](../user-guide/multithread/thread-intro)。

View File

@ -79,3 +79,14 @@ cc.macro.ENABLE_NATIVE_TTF_RENDERER = false;
- `getTemp` 方法被 `getTempAsync` 方法代替,请检查你项目中相关的用法。 - `getTemp` 方法被 `getTempAsync` 方法代替,请检查你项目中相关的用法。
- 启用多线程之后,会使用多线程版的缓存管理器,如果你的项目访问了未暴露的内部属性,请检查相关的用法。 - 启用多线程之后,会使用多线程版的缓存管理器,如果你的项目访问了未暴露的内部属性,请检查相关的用法。
### 音频系统
当你启用多线程驱动音频系统时,以下音频属性是定时更新而不是即时更新的:
- `duration`
- `currentTime`
这一般不会引起什么问题,无需特别关注。
如果你正在操作引擎内部维护的平台音频实例的话需要注意现在的平台音频实例每个事件只支持有一个监听者普通用户无需关注AudioSource、CCAudio 等面向用户的 API 依然支持多个监听者)。

View File

@ -96,7 +96,17 @@ Label 一直是项目优化的最难点,因为它完全不能和其它的渲
### 多线程支持 ### 多线程支持
现在,引擎的部分系统增加了多线程支持,启用后可以释放其对主线程的占用,减少卡顿现象。 现在,以下引擎的部分增加了多线程支持:
- 资源管线(下载与缓存部分)
- 音频系统
启用后可以释放其对主线程的占用,减少卡顿现象。
并且在微信小游戏平台下还有以下改进:
- 默认启用网络接口和音频接口的高性能模式
- 网络接口支持 HTTP/2、HTTP/3(QUIC) 协议
## 使用方法 ## 使用方法

Binary file not shown.

After

Width:  |  Height:  |  Size: 111 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 110 KiB

View File

@ -15,4 +15,4 @@ description: "在多线程中执行资源管线。"
这是在 Android 设备上,对游戏帧耗时的分析图,可以看到红框部分的消耗消失了,降低了每帧的耗时。 这是在 Android 设备上,对游戏帧耗时的分析图,可以看到红框部分的消耗消失了,降低了每帧的耗时。
在启用后,会有一些接口与之前不一样,请前往 [破坏性变更](../../breaking-change#资源管线) 查看详情。 在启用资源管线的多线程支持后,会有一些接口差异,请前往 [破坏性变更](../../breaking-change#资源管线) 查看详情。

View File

@ -7,10 +7,26 @@ description: "在多线程中操作音频。"
依次点击编辑器的菜单项 **项目 - 社区版设置**,然后勾选 **多线程驱动音频系统**,即可启用这一特性。 依次点击编辑器的菜单项 **项目 - 社区版设置**,然后勾选 **多线程驱动音频系统**,即可启用这一特性。
启用后,音频的所有操作都会在 Worker 线程中执行,完全释放对主线程的占用。 启用后,针对音频的所有操作都会在 Worker 线程中执行,完全释放对主线程的占用。
:::danger 注意 下面是在 Android 设备上,在开启前对游戏帧耗时的分析图:
该特性正在开发中,请勿启用。 ![analysis](./assets/tas-a.png)
::: 下面是开启多线程支持后:
![analysis-2](./assets/tas-a2.png)
可以看到每次播放音频的耗时从 7.5ms 降低至 0.6ms。
## 调整属性同步间隔
启用多线程支持后,音频实例运行在 Worker 线程中,所以音频属性是定时同步更新到主线程的。
默认情况下,间隔时间为 `500` 毫秒,其实大部分项目都不会读取音频属性,而是直接监听播放开始、播放结束等音频事件(无论如何,事件是立即发出的)。
所以我们可以适当地降低同步频率,优化项目的性能。
依次点击编辑器的菜单项 **项目 - 社区版设置**,然后修改 **属性同步间隔** 的值即可。
在启用音频系统的多线程支持后,会有一些接口差异,请前往 [破坏性变更](../../breaking-change#音频系统) 查看详情。

View File

@ -7,6 +7,11 @@ import {useCurrentSidebarCategory} from '@docusaurus/theme-common';
以下所有多线程特性暂时仅适用于微信小游戏平台。 以下所有多线程特性暂时仅适用于微信小游戏平台。
并且在微信小游戏平台下还有以下改进:
- 默认启用网络接口和音频接口的高性能模式
- 网络接口支持 HTTP/2、HTTP/3(QUIC) 协议
::: :::
社区版为引擎的部分系统增加了多线程支持,启用后可以释放其对主线程的占用,减少卡顿现象。 社区版为引擎的部分系统增加了多线程支持,启用后可以释放其对主线程的占用,减少卡顿现象。