不要只顾着看标题,看看这里,我们要开始介绍这个危险的地球,程序的CRASH是一件屡见不鲜的事情。。数字我就不列举啦,从大家对蓝屏的记忆就知道我没有说谎。关于这个话题,特意收集了一些资料,写成这个文章。
首先,我们谈谈怎样设计可靠的组件。
1. 有反应的程序
恶劣的,让用户恼火的情况:
打开程序,等待Response,没有LOADING,没有任何的信息。用户这个时候可能会再打开一次程序,结果就恶性循环,程序不断在后台打开,但UI却没有显示。
打开程序,以前白色,据说是在LOADING中,尝试关闭。依旧没有任何反应。
设计可以再好点:
从设计开始,让程序做个有反应的程序。具体来说:
A. 打开的时候可以选择Loading,让用户知道还有多久完成。当然要注意一点,LOADING的界面要提供一个CANCEL按钮,让用户可以停止等待。
B. 先把界面和信息显示出来,然后再更新某部分的内容,如黄色框框那里。
2. 竞争和死锁
A. 尽可能避免共享状态。
B. 注意管理和控制LOCKS,不要Lock任意的OBJECT,特别是Types,String类。
C. 保持锁在页的等级,特别是SPINLOCK. SPIN LOCK(http://msdn.microsoft.com/en-us/library/aa490179.aspx), 大致就是个多CUP环境下,高效率的LOCK.
D. 使用LOCK层级结构去避免死锁。(http://www.ddj.com/cpp/204801163;jsessionid=QFZ1KOWEBUIPTQE1GHRSKH4ATMY32JVN?pgno=3)