今早将原先sever的纯c代码,改写成C++类,一运行,昨天好好的,改完之后就跑不起来了。于是查啊查,查了一早上,最终定位到LOG的MUTEX这边。
非常奇怪的是当我在MUTEX的构造,析构函数中加入fprintf打印输出时,serv运行正常,但当我将fprintf注释掉后,serv就卡在那儿,下不去了。
百试百灵,这还能忍?!!!谁干的坏事儿?,于是我将makefile中的-O2,编译器优化关掉了
是的,serv一切运行正常了,我被编译器调戏了一早上。。。
续:在makefile中注释掉-O2意味着所有代码不能优化。嗯,在serv中将mutex用volatile修饰,一切问题解决了