【HarmonyOS鸿蒙应用开发者高级认证争议题】以下关于Taskpool和Worker的描述正确的是
原题: 以下关于Taskpool和Worker的描述正确的是
A.开发者需要自行管理taskpool的数量及生命周期
B.TaskPool和Worker的任务执行时长上限都是无限制
C.Worker自行管理生命周期,开发者无需关心任务负载高低
D.TaskPool支持任务延时执行
答案:D
解析:
发现有的博主说该题答案是B,在看过官方文档后发现,造成争议的原因是因为HarmonyOS版本更新发生了差异,在HarmonyOS开发者3.1/4.0版本中原文档提到:
实现 | TaskPool | Worker |
---|---|---|
生命周期 | TaskPool自行管理生命周期,无需关心任务负载高低。 | 开发者自行管理Worker的数量及生命周期。 |
任务池个数上限 | 自动管理,无需配置。 | 同个进程下,最多支持同时开启8个Worker线程。 |
任务执行时长上限 | 无限制。 | 无限制。 |
设置任务的优先级 | 不支持。 | 不支持。 |
执行任务的取消 | 支持取消任务队列中等待的任务。 | 不支持。 |
所以,在旧版本中TaskPool和Worker的任务执行时长上限确实都是无限制,但是在HarmonyOS NEXT Beta1版本中,对于该特性发生了改变
实现 | TaskPool | Worker |
---|---|---|
生命周期 | TaskPool自行管理生命周期,无需关心任务负载高低。 | 开发者自行管理Worker的数量及生命周期。 |
任务池个数上限 | 自动管理,无需配置。 | 同个进程下,最多支持同时开启64个Worker线程,实际数量由进程内存决定。 |
任务执行时长上限 | 3分钟(不包含Promise和async/await异步调用的耗时,例如网络下载、文件读写等I/O任务的耗时),长时任务无执行时长上限。 | 无限制。 |
设置任务的优先级 | 支持配置任务优先级。 | 不支持。 |
执行任务的取消 | 支持取消已经发起的任务。 | 不支持。 |
任务延时执行 | 支持。 | 不支持。 |
其中对于任务执行时长上限,TaskPool由无限制改为了3分钟,并增加支持任务延时执行,所以对于最新版本的HarmonyOS应该选择D