OpenHarmony开发者论坛

标题: Worker 线程为何会影响主线程的运行? [打印本页]

作者: msdone    时间: 2023-10-25 19:18
标题: Worker 线程为何会影响主线程的运行?
【问题描述】
问题现象和发生的背景
  当在 Worker 线程中使用 FileAccess 服务,Worker 关闭时,FileAccess 的服务也会关闭,导致主线程调用不了 FileAccess 的API(报 14300001 IPC 通信失败的错误)。如果在主线程重新请求 FileAccessHelper 会报 nullptr 的错误


相关的代码,截图,日志信息
(, 下载次数: 10)


(, 下载次数: 0)



我想要达到的结果
当子线程任务(任务需要使用 FileAccess)完成,关闭子线程后,主线程依然可以使用 FileAccess

【运行环境】
硬件:rk3568
ROM版本:3.2 Release
DevEvoStudio版本:DevEco Studio 3.1.1 Release
SDK版本:3.2.13.5

作者: 深开鸿_王石    时间: 2023-11-1 08:54
[md]主线程和worker要用底层库时要分别打开,创建实例,不能共用

[/md]
作者: 胖子的梦    时间: 2023-11-6 10:42
[md]主线程和worker线程资源是不共享的,所以在worker创建使用的FileAccess服务 ,主线程是不能使用FileAccess 服务的。主线程需要自己再创建一个FileAccess服务

[/md]
作者: msdone    时间: 2023-11-8 11:35
回复 胖子的梦: worker 创建 FileAccessHelper 之后,如果不关闭 worker 线程,在主线程创建 FileAccessHelper 会报空指针,如果关闭 worker 线程,在主线程创建 FileAccessHelper 会报 cpp 错误:Signal:SIGSEGV(SEGV_MAPERR)@0x00487091cf989e85 ,
作者: msdone    时间: 2023-11-8 11:35
回复 深开鸿_王石: worker 创建 FileAccessHelper 之后,如果不关闭 worker 线程,在主线程创建 FileAccessHelper 会报空指针,如果关闭 worker 线程,在主线程创建 FileAccessHelper 会报 cpp 错误:Signal:SIGSEGV(SEGV_MAPERR)@0x00487091cf989e85 ,
作者: msdone    时间: 2023-11-9 20:25
[md]4.0 的 Worker 可以实现了
![image.png](data/attachment/forum/202311/09/202440oed44a8p8f4h4zy5.png "image.png")

[/md]
作者: 马迪    时间: 2023-11-11 06:59
回复 msdone: 可以共用一个了?




欢迎光临 OpenHarmony开发者论坛 (https://forums.openharmony.cn/) Powered by Discuz! X3.5