puerts icon indicating copy to clipboard operation
puerts copied to clipboard

[UE]在网络的子线程调用回调到Js,会报错,不知道是不是线程冲突

Open 276455058 opened this issue 2 years ago • 8 comments

detail | 详细描述

企业微信截图_16561461533586 企业微信截图_16561462187342

276455058 avatar Jun 25 '22 08:06 276455058

一般不都是回到主线程回调这个吗?

FishOrBear avatar Jun 27 '22 01:06 FishOrBear

试试把多线程支持打开:https://github.com/Tencent/puerts/blob/master/unreal/Puerts/Source/JsEnv/JsEnv.Build.cs#L29 ThreadSafe 改为true

chexiongsheng avatar Jun 27 '22 02:06 chexiongsheng

已经解决了,回调回主线程就安全了 AsyncTask(ENamedThreads::GameThread, = { if (LostConnectionDelegate.IsBound()) { LostConnectionDelegate.ProcessDelegate<UObject>(nullptr); } });

276455058 avatar Jun 27 '22 03:06 276455058

投递回主线程可以,但改了这个地方,其它地方一不留神还可能回犯同样的错误。 可以试试ThreadSafe选项

chexiongsheng avatar Jun 27 '22 06:06 chexiongsheng

微信图片_20220627152719 微信图片_20220627152734 好像不得行,必须回主线程才行

276455058 avatar Jun 27 '22 07:06 276455058

哦,调试那没加锁

chexiongsheng avatar Jun 29 '22 02:06 chexiongsheng

我在调试器那处理了多线程了,帮忙试试? https://github.com/Tencent/puerts/commit/fc4fcc91d31fcb94847d5d60e28c2f1e22ec568b

chexiongsheng avatar Jun 29 '22 11:06 chexiongsheng

好的,我晚点试下,把结果提交给你

276455058 avatar Jun 29 '22 12:06 276455058