关于Fatal Error in GC : Too Many threads

本文介绍了一个程序在网络状况不佳时出现TooManyThreads错误的问题及解决方案。通过调整代码逻辑,确保了WWW请求能够有序进行,避免了因网络延迟造成的线程堆积。

之前写的某个程序在一台机子上测试一直出现这个问题,换一台则不会出现。也查不出是什么原因。开始以为是电脑问题,后来发现在网络好的地方就不会出现,网络差的地方则经常出现。在翻代码的时候发现有一个StartCoroutine写在了Update中,其中调用了WWW类,每调用一次Update就会开一个线程调用WWW,在网络好的情况下WWW可以及时返回,不会出现过多的线程,一旦网络情况比较糟糕,这边一直在开线程,那边又在等待线程返回,导致线程过多,出现”Too Many threads”的情况,我采用的解决办法是将WWW的调用放在一个while(true)中,每次调用WWW都必须等待上一次WWW返回。

Building Library\Bee\artifacts\WebGL\GameAssembly\master_WebGL_wasm\q8hu1z4zd3j6.o failed with output: E:\GAJ\gcwj\GAJ_ZHDD_WEB\Library\Bee\artifacts\WebGL\il2cppOutput\cpp\Assembly-CSharp.cpp:50701:54: error: token is not a valid binary operator in a preprocessor subexpression #if FORCE_PINVOKE_INTERNAL || FORCE_PINVOKE_HCNetSDK _INTERNAL ~~~~~~~~~~~~~~~~~~~~~~ ^ E:\GAJ\gcwj\GAJ_ZHDD_WEB\Library\Bee\artifacts\WebGL\il2cppOutput\cpp\Assembly-CSharp.cpp:50704:54: error: token is not a valid binary operator in a preprocessor subexpression #if FORCE_PINVOKE_INTERNAL || FORCE_PINVOKE_HCNetSDK _INTERNAL ~~~~~~~~~~~~~~~~~~~~~~ ^ E:\GAJ\gcwj\GAJ_ZHDD_WEB\Library\Bee\artifacts\WebGL\il2cppOutput\cpp\Assembly-CSharp.cpp:50707:54: error: token is not a valid binary operator in a preprocessor subexpression #if FORCE_PINVOKE_INTERNAL || FORCE_PINVOKE_HCNetSDK _INTERNAL ~~~~~~~~~~~~~~~~~~~~~~ ^ E:\GAJ\gcwj\GAJ_ZHDD_WEB\Library\Bee\artifacts\WebGL\il2cppOutput\cpp\Assembly-CSharp.cpp:50710:54: error: token is not a valid binary operator in a preprocessor subexpression #if FORCE_PINVOKE_INTERNAL || FORCE_PINVOKE_HCNetSDK _INTERNAL ~~~~~~~~~~~~~~~~~~~~~~ ^ E:\GAJ\gcwj\GAJ_ZHDD_WEB\Library\Bee\artifacts\WebGL\il2cppOutput\cpp\Assembly-CSharp.cpp:50713:54: error: token is not a valid binary operator in a preprocessor subexpression #if FORCE_PINVOKE_INTERNAL || FORCE_PINVOKE_HCNetSDK _INTERNAL ~~~~~~~~~~~~~~~~~~~~~~ ^ E:\GAJ\gcwj\GAJ_ZHDD_WEB\Library\Bee\artifacts\WebGL\il2cppOutput\cpp\Assembly-CSharp.cpp:50716:54: error: token is not a valid binary operator in a preprocessor subexpression #if FORCE_PINVOKE_INTERNAL || FORCE_PINVOKE_HCNetSDK _INTERNAL ~~~~~~~~~~~~~~~~~~~~~~ ^ E:\GAJ\gcwj\GAJ_ZHDD_WEB\Library\Bee\artifacts\WebGL\il2cppOutput\cpp\Assembly-CSharp.cpp:50719:54: error: token is not a valid binary operator in a preprocessor subexpression #if FORCE_PINVOKE_INTERNAL || FORCE_PINVOKE_HCNetSDK _INTERNAL ~~~~~~~~~~~~~~~~~~~~~~ ^ E:\GAJ\gcwj\GAJ_ZHDD_WEB\Library\Bee\artifacts\WebGL\il2cppOutput\cpp\Assembly-CSharp.cpp:50722:54: error: token is not a valid binary operator in a preprocessor subexpression #if FORCE_PINVOKE_INTERNAL || FORCE_PINVOKE_HCNetSDK _INTERNAL ~~~~~~~~~~~~~~~~~~~~~~ ^ E:\GAJ\gcwj\GAJ_ZHDD_WEB\Library\Bee\artifacts\WebGL\il2cppOutput\cpp\Assembly-CSharp.cpp:50725:54: error: token is not a valid binary operator in a preprocessor subexpression #if FORCE_PINVOKE_INTERNAL || FORCE_PINVOKE_HCNetSDK _INTERNAL ~~~~~~~~~~~~~~~~~~~~~~ ^ E:\GAJ\gcwj\GAJ_ZHDD_WEB\Library\Bee\artifacts\WebGL\il2cppOutput\cpp\Assembly-CSharp.cpp:50728:54: error: token is not a valid binary operator in a preprocessor subexpression #if FORCE_PINVOKE_INTERNAL || FORCE_PINVOKE_HCNetSDK _INTERNAL ~~~~~~~~~~~~~~~~~~~~~~ ^ E:\GAJ\gcwj\GAJ_ZHDD_WEB\Library\Bee\artifacts\WebGL\il2cppOutput\cpp\Assembly-CSharp.cpp:50731:54: error: token is not a valid binary operator in a preprocessor subexpression #if FORCE_PINVOKE_INTERNAL || FORCE_PINVOKE_HCNetSDK _INTERNAL ~~~~~~~~~~~~~~~~~~~~~~ ^ E:\GAJ\gcwj\GAJ_ZHDD_WEB\Library\Bee\artifacts\WebGL\il2cppOutput\cpp\Assembly-CSharp.cpp:50734:54: error: token is not a valid binary operator in a preprocessor subexpression #if FORCE_PINVOKE_INTERNAL || FORCE_PINVOKE_HCNetSDK _INTERNAL ~~~~~~~~~~~~~~~~~~~~~~ ^ E:\GAJ\gcwj\GAJ_ZHDD_WEB\Library\Bee\artifacts\WebGL\il2cppOutput\cpp\Assembly-CSharp.cpp:50737:54: error: token is not a valid binary operator in a preprocessor subexpression #if FORCE_PINVOKE_INTERNAL || FORCE_PINVOKE_HCNetSDK _INTERNAL ~~~~~~~~~~~~~~~~~~~~~~ ^ E:\GAJ\gcwj\GAJ_ZHDD_WEB\Library\Bee\artifacts\WebGL\il2cppOutput\cpp\Assembly-CSharp.cpp:50740:54: error: token is not a valid binary operator in a preprocessor subexpression #if FORCE_PINVOKE_INTERNAL || FORCE_PINVOKE_HCNetSDK _INTERNAL ~~~~~~~~~~~~~~~~~~~~~~ ^ E:\GAJ\gcwj\GAJ_ZHDD_WEB\Library\Bee\artifacts\WebGL\il2cppOutput\cpp\Assembly-CSharp.cpp:50743:54: error: token is not a valid binary operator in a preprocessor subexpression #if FORCE_PINVOKE_INTERNAL || FORCE_PINVOKE_HCNetSDK _INTERNAL ~~~~~~~~~~~~~~~~~~~~~~ ^ E:\GAJ\gcwj\GAJ_ZHDD_WEB\Library\Bee\artifacts\WebGL\il2cppOutput\cpp\Assembly-CSharp.cpp:50746:54: error: token is not a valid binary operator in a preprocessor subexpression #if FORCE_PINVOKE_INTERNAL || FORCE_PINVOKE_HCNetSDK _INTERNAL ~~~~~~~~~~~~~~~~~~~~~~ ^ E:\GAJ\gcwj\GAJ_ZHDD_WEB\Library\Bee\artifacts\WebGL\il2cppOutput\cpp\Assembly-CSharp.cpp:50749:54: error: token is not a valid binary operator in a preprocessor subexpression #if FORCE_PINVOKE_INTERNAL || FORCE_PINVOKE_HCNetSDK _INTERNAL ~~~~~~~~~~~~~~~~~~~~~~ ^ E:\GAJ\gcwj\GAJ_ZHDD_WEB\Library\Bee\artifacts\WebGL\il2cppOutput\cpp\Assembly-CSharp.cpp:50752:54: error: token is not a valid binary operator in a preprocessor subexpression #if FORCE_PINVOKE_INTERNAL || FORCE_PINVOKE_HCNetSDK _INTERNAL ~~~~~~~~~~~~~~~~~~~~~~ ^ E:\GAJ\gcwj\GAJ_ZHDD_WEB\Library\Bee\artifacts\WebGL\il2cppOutput\cpp\Assembly-CSharp.cpp:50755:54: error: token is not a valid binary operator in a preprocessor subexpression #if FORCE_PINVOKE_INTERNAL || FORCE_PINVOKE_HCNetSDK _INTERNAL ~~~~~~~~~~~~~~~~~~~~~~ ^ fatal error: too many errors emitted, stopping now [-ferror-limit=] 20 errors generated. emcc2: error: '"D:/Program Files (x86)/unity2022/2021.3.44f1c1/Editor/Data/PlaybackEngines/WebGLSupport/BuildTools/Emscripten/llvm\clang++.exe" -target wasm32-unknown-emscripten -DEMSCRIPTEN -fno-inline-functions -mllvm -combiner-global-alias-analysis=false -mllvm -enable-emscripten-cxx-exceptions -mllvm -enable-emscripten-sjlj -mllvm -disable-lsr -D__EMSCRIPTEN_major__=2 -D__EMSCRIPTEN_minor__=0 -D__EMSCRIPTEN_tiny__=19 -D_LIBCPP_ABI_VERSION=2 -Dunix -D__unix -D__unix__ -Werror=implicit-function-declaration -Xclang -iwithsysroot/include/SDL "--sysroot=D:\Program Files (x86)\unity2022\2021.3.44f1c1\Editor\Data\PlaybackEngines\WebGLSupport\BuildTools\Emscripten\emscripten\cache\sysroot" -Xclang -iwithsysroot/include\compat -D__webgl__ -Wno-c++11-extensions -Wno-nonportable-include-path -ffunction-sections -fno-unwind-tables -fomit-frame-pointer -fno-threadsafe-statics -std=c++11 -Wno-#warnings -Wswitch -Wno-trigraphs -Wno-tautological-compare -Wno-invalid-offsetof -Wno-implicitly-unsigned-literal -Wno-integer-overflow -Wno-shift-negative-value -Wno-unknown-attributes -Wno-implicit-function-declaration -Wno-null-conversion -Wno-missing-declarations -Wno-unused-value -Wno-pragma-once-outside-header -fvisibility=hidden -fexceptions -fno-rtti -fno-strict-overflow -ffunction-sections -fdata-sections -fmessage-length=0 -pipe -DBASELIB_INLINE_NAMESPACE=il2cpp_baselib -DIL2CPP_MONO_DEBUGGER_DISABLED -DRUNTIME_IL2CPP -DHAVE_BDWGC_GC -DNDEBUG -I. -IE:/GAJ/gcwj/GAJ_ZHDD_WEB/Library/Bee/artifacts/WebGL/il2cppOutput/cpp "-ID:/Program Files (x86)/unity2022/2021.3.44f1c1/Editor/Data/il2cpp/libil2cpp/pch" "-ID:/Program Files (x86)/unity2022/2021.3.44f1c1/Editor/Data/il2cpp/libil2cpp" "-ID:/Program Files (x86)/unity2022/2021.3.44f1c1/Editor/Data/il2cpp/external/baselib/Include" "-ID:/Program Files (x86)/unity2022/2021.3.44f1c1/Editor/Data/il2cpp/libil2cpp/os/ClassLibraryPAL/brotli/include" "-ID:/Program Files (x86)/unity2022/2021.3.44f1c1/Editor/Data/il2cpp/external/baselib/Platforms/WebGL/Include" -Oz -fcolor-diagnostics -fdiagnostics-absolute-paths -UGC_THREADS -UUSE_MMAP -UUSE_MUNMAP -c -xc++ E:/GAJ/gcwj/GAJ_ZHDD_WEB/Library/Bee/artifacts/WebGL/il2cppOutput/cpp/Assembly-CSharp.cpp -o Library/Bee/artifacts/WebGL/GameAssembly/master_WebGL_wasm/q8hu1z4zd3j6.o' failed (1) UnityEngine.GUIUtility:ProcessEvent (int,intptr,bool&)
07-23
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值