|
当前的错误检测技术缺乏对多线程应用的支持,迫使开发人员在两难之间作出选择:1)使用多线程以增强应用的性能和效率;2)保证其应用的可靠性。Threads++解决了这一难题,利用其最先进的运行时自动错误检测工具,帮助开发人员彻底地检测多线程应用。
多线程为开发人员提供了一种控制、增强和优化程序执行的强大途径。多线程程序比单线程程序有若干优势。Sun
World Online上的一篇文章认为,多线程能够...(1)
- 从多处理器硬件获得性能上的好处
- 提高应用的处理能力
- 提高应用的响应性
- 增强进程间的通讯
- 有效地使用系统资源
- 允许开发人员使用分布式对象内在的线程性
- 帮助开发人员建立结构更好的程序
目前,多线程已经被当作是“开发人员能够加入其技能宝库中的最重要的技巧之一”,并且当他们开发满足未来需要的应用时变得越来越重要。(2)
多线程客户/服务器开发的黎明已经来到,我们已经面临着更高的要求,建立高性能的服务器,扩展Internet/intranet服务器,利用多处理器的能力,构造高性能的OLE和COM对象并增强整个应用的响应性。在未来几年中,会出现对高性能视屏服务器和复杂的实时动画和仿真系统的需求。(2)
在多线程能够极大地提高应用性能的同时,一个事实是“开发多线程应用即使对一个经验丰富的程序员来说也是困难的”,这一点得到了许多开发人员的认可(2,3)。根据DeMarco和Lister的资料,非线程应用每400行代码平均含有1.2个错误。而多线程应用就象任何性能优化编程技术一样,每行代码都可能含有潜在的错误。
不幸的是通常的调试器(如dbx等)和运行时检测工具都不能检测线程中的错误。多线程应用的非线形性质搞乱了大多数调试器和运行时错误检测工具,结果它们都不能“运行”一个多线程应用并测试其非线程代码。即使这些工具能够运行一个多线程应用,也无能检测线程中的错误,因为它们不能获知何时开始了一个新线程,从而无法正确地报告问题。
因此,多线程应用的开发人员面临着困难的抉择:1)提供不可靠的多线程代码;2)花费大量的时间和金钱试图手工调试多线程代码并祈求能够找出所有的错误;或者3)排除多线程能力以保证应用的可靠性。
对于有责任心的开发人员来说上述方案都是不可行的。不可靠的代码肯定会大大增加现场服务和技术支持成本,以及更多的测试和调试时间,而且也会对公司的信誉和财政造成长期的损害。发现和修正非线程应用中的一个错误平均需要12个小时,而手工发现和修正多线程代码中的错误可能需要几周的时间,并仍然可能将不可靠的代码提供给用户。避免多线程技术可以极大地提高可靠性,但简单低性能的应用如何对付竞争和市场的压力?
如果您要有效地开发复杂、有竞争力和可靠的软件,就需要使用多线程技术,然后使用一个能够彻底地自动检测每个线程的运行时错误的工具。ParaSoft的Insure++和Threads++是目前市场上唯一能够得到的这样一个工具。Threads++使得Insure++能够处理所有的线程,跟踪应用中所有的进程,并迅速查明错误。
考虑多线程的重要性、优势和风险,很明显在当前和将来的软件开发中生产可靠的多线程应用的能力是必须的。只有Threads++能够帮助多线程应用的开发人员快速找到和修正线程中的错误,因此Threads++是任何多线程开发环境中必要的一个部件。
|