观海听涛
Waiting for you

写程序过程中的杂想

23 Mar 2013

昨天改了个程序,测试了一下,发现在某一个线程算出结果并退出后,其它线程不能立即退出(设全局标志量了,并且算出结果的线程也改标志量了)。没仔细研究,就想着可能是对全局变量的操作考虑得不够周全,互斥,读写锁,条件变量这些都没用上。于是就开始改程序了,查资料,调试,调试,调试...一晚上没搞定,资料查得我头都晕了,程序始终是那样,搞得很无奈啊。

今天早上接着调,还是那样。我有些怀疑自己的看法是不是正确的了,于是静下心来仔细分析了一下程序应该呈现的行为,尼玛,昨天出现的那个根本就不是问题,程序本来就该这样的。什么互斥,条件变量这些根本用不着,用了只会让程序运行得更慢,因为对全局变量的一条flag=1操作本来就是原子操作,不用担心中断会引发问题,也不存在两个线程同时写这一个变量的情况,就是有也不会出现问题。

以上全是废话,我想说的是,不经过仔细推敲不要去改程序,要不然只会越改越乱,也不要盲目的去使用一些东西,只有理解了这些东西的本质以及何时该使用之后,才能让它们为我所用,而不是成为一个累赘。望自己以此为训,提高效率,不要做一些无用功。