首页 > 代码库 > 不要在类的函数中使用static字段
不要在类的函数中使用static字段
昨天在做存储服务的压力测试,后台是采用多线程根据玩家唯一标识做线程划分的,在测试的过程中发现,进行存储的时候,会发生玩家数据错乱的情况。
一开始怀疑是上层逻辑在处理数据的时候发生了错乱,导致保存的时候玩家数据是乱的了。
后来经过详细的日志跟踪,发现其实在存储之前上层发送过来的数据是完全正确的,在存储过后,再读取出来,数据就是乱的了。在这里要说下log4cplus还是非常优秀的日志库,能够在日志中记录线程ID,对于多线程的调试能起到一定的帮助作用
仔细看了一下代码,发现原来是处理数据存储的对象函数里面为了减少栈的大小,使用了一个静态的buf。
对象本身虽然是每个线程里面一个,但是buf却是共享的,这就导致了存储sql拼装的时候,发生了错乱了。
对此错误,记录一下,防止以后发生类似的问题。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。