win10控制台程序printf死锁问题
昨天遇到一个奇葩的问题,服务器正常运行但经常出现客户端无法连接的问题。我很好奇,在accept返回的地方断点,发现无法accept了。这就怪了,以前从没出现过这种情况。服务器网络用的asio,无法accept应该就是线程阻塞了,我暂停查看了一下所有线程,发现服务器在收到一个链接的时候,暂停了。暂停的地方是printf,连接成功之后写日志,顺便写到控制台了一份,竟然在printf暂停了。这。。人与计算机之间最基本的信任呢!!我把线程数量减少到1个,仍然有这个问题,但是关闭printf之后就不会有这个问题了。
今天在调试另一个问题的时候,发现程序的标题有点奇怪。“选择:xxx.exe”,“选择”是什么意思?我仔细一看,原来在win10下面你只要点一下控制台窗口的内容,就会进入选择模式,锁住了屏幕,相当于阻塞了主线程。这用户体验做的真到位,windows果然还是不适合做服务器开发!!
寻找信心决心和贪心的一致性,达到情绪和环境的平衡,做到行动和思维一致才叫真正的行动。