发现使用std::recursive_mutex能更好地解决死锁的bug