socket的异步beginaccept问题求问
unity3d吧
全部回复
仅看楼主
level 5
大佬们,我在脚本里使用了beginaccept接受客户端连接,但是成功后调用的回调函数无法修改脚本内任何变量。
因为这个异步回调函数不在主线程,而在网络后台线程,而且unity脚本是单线程,所以我猜测是后台线程不能直接修改主线程的游戏对象数据
那我该怎么做才能在回调函数里修改脚本内其他变量呢,用协程也没用
2024年12月14日 07点12分 1
level 13
Loom?[疑问]
2024年12月16日 08点12分 0
谢谢,让我知道有这个东西
2024年12月16日 19点12分
level 5
我顶
2024年12月14日 07点12分 2
level 5
好心人快来[乖]
2024年12月14日 07点12分 3
level 5
不要沉啊[泪]
2024年12月14日 07点12分 4
level 7
不可能一定是哪里写错了,或者表达错误
2024年12月16日 08点12分 5
我仔细监察过确实没问题,而且在unity粒回调函数应该确实不在主线程?bool赋值没问题,其他的都不行
2024年12月16日 19点12分
level 5
本人已放弃,此问题在于beginaccept会开子线程,而脚本是在主线程中允许的,子线程可能无法更改主线程数据
所以回调函数内只做通讯的事就好
2024年12月16日 13点12分 7
你加了lock了吗,感觉听起来像是没加lock的结果
2025年01月27日 13点01分
@三角洲KD学教父 没,我知道的这个函数确实会在unity的非主线程运行,具体也不知道啥原因[乖]
2025年02月12日 05点02分
level 2
这就放弃了?这不是有手就行吗?很简单。一会告诉你。[酷]
2025年01月20日 08点01分 8
level 8
回调逻辑合并到主线程或者通知主线程,管理线程的方案还是很多的
2025年02月12日 06点02分 9
太菜力[乖]
2025年02月12日 07点02分
1