今天新来的同事遇到一个问题,某个功能只能执行一次启动和关闭,然后就开不起来了。
看了下代码,希望的流程是这样:
主线程新建线程A,线程A调用异步方法F1,等待F1的回调函数返回后根据结果调用异步方法F2,等待F2回调,通知主线程,然后线程A结束。
每次执行功能启动时都新建一个A。
结果同事在执行F1 F2后加了互斥量,却在回调中进行释放。
虽然我搞不大清楚互斥量到底该怎么用,但凭现象和代码我觉得是加锁和解锁不在同一个线程,导致新线程获取不到锁了。
同事之前是做linux的,现在刚搞几周Windows,所以虽然质疑为什么能够锁两次也被我用“锁已经取到了,多锁几次没关系”忽悠过去了。
联想到经常被我的一知半解忽悠的销售和测试,以及自己技术面试全部被鄙视的经历……莫非我适合去搞售前忽悠客户而不是自以为的搞技术?
也许我的优点是举一反三见微知著活学活用自吹自擂,嘿嘿。