HarmonyOS鸿蒙Next中App在Worker线程内执行动态链接库函数崩溃的问题咨询。
HarmonyOS鸿蒙Next中App在Worker线程内执行动态链接库函数崩溃的问题咨询。
现在App有两个线程,一个主线程。 一个Worker线程。
在之前,我们使用了一套C语言编码的动态链接库,通过系统提供的NAPI和liuv 封装了业务代码。 这套代码,在主线程执行,是正常的。 现在把这套代码放在Worker线程中执行,出现崩溃。
崩溃信息为
LastFatalMessage:[a92ab256d403948, 546a9d, 2631202] [default] [CheckThread:206] Fatal: ecma_vm cannot run in multi-thread! thread:2532 currentThread:2558
现在推测,libuv是将动态链接库层的回调函数,推到了 主线程的事件循环中处理。我们改造成为Worker之后,导致找不到主线程事件循环。进而出现崩溃。
诉求
1.确认Woker内启动C动态链接库出现崩溃的原因; 2.Worker内如何正常使用动态链接库,而不崩溃的方案。
更多关于HarmonyOS鸿蒙Next中App在Worker线程内执行动态链接库函数崩溃的问题咨询。的实战教程也可以访问 https://www.itying.com/category-93-b0.html
该错误是由于回调函数必须运行在主线程中,其他线程发起调用会抛出该异常。如果需要从C++线程回调ArkTS接口,建议参考下面的指导
https://developer.huawei.com/consumer/cn/doc/harmonyos-faqs-V5/faqs-ndk-8-V5
请参考方舟多线程检测:
更多关于HarmonyOS鸿蒙Next中App在Worker线程内执行动态链接库函数崩溃的问题咨询。的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html