std::mutex找bug解析
最近走了个菜鸟,接手残余项目。
遇到一个问题,这货用std::mutex在websocketpp::server类的on_message函数里面,不断try lock和lock
这里面要注意几个问题:
- mutex不能单独unlock,在debug下会跑飞,但是release下不会,好在客户现场用的是release,不然会莫名其妙不断死不知道多少次
- mutex应该是线程间同步的原语,在on_message回调里面,好在每次都是同一个线程。没仔细去研究这个server类的实现,要是on_message每次回调不是同一个线程,又是跑飞到天荒地老
这块代码里面有很多问题,trylock和unlock分别放在两个指令响应里面,也就是说,会收到两个报文,一个负责trylock,一个负责unlock
如果客户端发过来一个unlock指令,瞬间跑飞。
这里面需要有一个标记变量,记录是否已经接收trylock
更坑爹的是,这货居然定义了一个单纯的unlock指令,负责客户端解锁,看日志,接收了很多次,我自己在debug模式试了下,飞了,客户现场居然没飞,原来是这个问题。
年后一波离职潮,走了些人,不得不谓有点失落。
忽悠人,钱首先给到位,然后再谈价值,谈理想。格局要大,做领导更要设身处地站在菜鸟的角度想。
也是。你不想干实际的活儿了,想安排人干活,也没错,但你要安抚好人心,随便发号指令,难以服众阿。
另外一点,开始有点发现渠道为王这个道理,世界上不缺干活的人,缺的是能促成一件事件的人,相当于打通社会的通道,只要你能从0变成1,剩下的让干活的人负责。
从社会的角度上看,不缺把1变成100的人,但缺把0变成1的人。
浙公网安备 33010602011771号