在HarmonyOS开发中taskpool使用问题咨询?https://developer.huawei.com/consumer/cn/doc/harmonyos-guides...
https://developer.huawei.com/consumer/cn/doc/harmonyos-guides...
依据上述文档期望确认以下问题:
1.「从API version 11开始,实现任务的函数需要使用类方法时,该类必须使用装饰器@Sendable标注,且仅支持在.ets文件中使用。」指的是实现任务的函数,函数题中若需要调用类方法,则该类必须使用装饰器@Sendable标注嘛?不使用会出现什么问题呢? 如附件图片所示,RiskMtTools、RiskInitializer 是否均需要使用 @Sendable 呢?
2.「由于不同线程中上下文对象是不同的,因此TaskPool工作线程只能使用线程安全的库,例如UI相关的非线程安全库不能使用,具体请见多线程安全注意事项。」此处是引入了与UI相关的库会崩溃,还是在异步任务中执行了和UI创建、更新相关的调用时才会崩溃?
本文参与了 【 HarmonyOS NEXT 技术问答冲榜,等你来战!】欢迎正在阅读的你也加入。
具体解决措施:
问题一:实现任务的函数需要使用装饰器@Concurrent标注,实现任务的函数需要使用类方法时,该类必须使用装饰器@Sendable标注,如果不使用时,当多个并发实例尝试同时更新可变Sendable数据时,会发生数据竞争。
问题二:UI主要用来展示和刷新相关UI页面,UI线程是为了更新UI的,更新了页面才能看到运行的效果,如果在子线程修改或更新UI,会导致异常。
本文参与了 【 HarmonyOS NEXT 技术问答冲榜,等你来战!】欢迎正在阅读的你也加入。