如图所示,location的unlock可以比lock先执行,锁不住了。出现场景:同进程通信,10个机器人一起登录会出现。
没看懂你的意思啊,没加锁成功的话,await lock怎么会往下执行的呢?又怎么会去执行切图操作呢?
egametang 现在执行顺序是这样的, await失效了
你加锁到切图成功,中间没有 加锁成功的日志,难道这个Lock方法执行了一半就返回了,问题这里根本没有return语句啊
是最新的ET吗?
egametang ET 7.2
自己再加日志看吧
egametang 猫大,同进程消息处理 这里会有return,这里会出现地图服务和location服务,出现异步的情况么?
egametang
这里加个阻塞,就必现了,
这应该不是问题,这只是发送,实际上你要等这个lock函数完成,await LockProxyComponent.Instance.lock才能返回,问题是你lock函数并没有完成
你要在传送那里的lock后面加日志
这个就是呀
那你逻辑根本就不对啊,你lock里面没有任何return,没看到这个lock加锁成功的日志,就往下走了,我怀疑你unit不是同一个unit。你把unit的hashcode打印出来
hashCode是一样的。
我去, 这里用了Coroutine🤣
不加Coroutine会死锁超时
死锁你要找到原因,肯定用了同一个车LockType了
egametang 不是死锁,是超时。改成await后,下面有个WaitAsync会阻塞,导致阻塞超时,可以把他改成一次性的计时器不阻塞就行了吧。
是有点问题,我看看
之前的.Coroutine()应该没有问题Lock里面 CoroutineLockComponent.Instance.Wait 因为是第一个获取协程锁的,他会同步往下执行。不知道你上面的例子为啥没有同步往下执行。这里我改一下吧