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