讨论一下:如何在windows平台上写出稳定的(服务)程序
在很多情况下我们需要在windows平台上编写长时间高负载运行的程序,比如网络服务器一类的.
但经常发现程序运行一段时间后(几天或数月),会出一些莫名其妙的错误,表现常常是"非法操作,程序被关闭"一类的.很难跟踪。
希望大家讨论和分享一些编写高稳定应用程序的经验.
个人抛砖引玉,说点比较一般的体会,像使用指针前要判断这种就先不说了。
1:尽量减少GDI操作,没有最好.尤其是用MFC的时候.
2:在用vc6.0的时候,尽量少用其STL的map/list/vector等容器,这些容器的实现在vc6.0中的版本稳定性据说比较一般
3:如果可以的话,绝不调用malloc/free或new delete,采用预先分配的缓冲.
4:尽可能用try/catch包围代码.
5:IO操作最好加锁,尤其是写磁盘文件,最好加全局锁
6:对任何有可能增长的资源(如连接数,外来数据)计算其容量,并设定上限。
7:有前辈指点过可以调用一些系统的debug函数,来接管程序的一些致命异常,一时想不起来是哪些函数了,请赐教.
8: 编写进程监控程序(但监控程序本身的稳定性也难说,所以这不是根本办法)
近两年写windows程序少了,在unix/linux上写的程序相对多一些,对windows平台的编程生疏了不少,以上所列可能有争议,或者浅薄和片面,请多指教.