有个疑问,这种情况需要加锁吗?
- Dominant language
- Go
- Stars
- 7.8k
- Forks
- 1.3k
- PR merge metrics
- No merged PRs in 30d
Description
func (m *Move) Handle (request ziface.IRequest){
//1 解析客户端传递过来的protobuf
protoMsg := &pb.Position{}
err := proto.Unmarshal(request.GetData(), protoMsg)
if err != nil {
fmt.Printf("move router proto unmarshal error:%v\n",err)
return
}
//2 得到当前发送位置的是哪个玩家
pid, err := request.GetConnection().GetProperty("pid")
if err != nil {
fmt.Printf("move router get pid error:%v\n",err)
return
}
//3 获取player对象
player := core.WorldMgrObj.GetPlayerByPid(pid.(int32))
//4 广播并更新当前玩家的位置
player.UpdatePos(protoMsg.X ,protoMsg.Y, protoMsg.Z, protoMsg.V)
}
您好 ,我有个疑问,想第3步获取了player对象,这个时候修改player对象需要加锁吗 ,我理解是需要加锁的,因为在此时可能有其他协程在读取player对象的数据,这个时候我们修改player,可能会造成数据竞争,请问是有这个问题吗?
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.