呵呵,只要大家有兴趣,技术讨论还是很喜欢的,那就讨论到底吧。
其实我并不是要证明“并行 = 单行”,而是说在并行时,某些环节,实际上还是必须单行,比如CPU,如果是多个的话,存在并行问题,但如果多个CPU共同执行一个任务的话,肯定有个同步的问题,同步,就意味着各进程的进度不一致,有前有后,有些线程必须等待另一些线程,可以说,在等待的这一刻,其实就是“单行”。
同理,在程序代码环境,多线程确实是并行的,但还提供了同步功能,为什么?就因为有些工作,是互相制约的,一定要按指定的次序执行才行,比如说同一ADOConnection下各个ADOQUERY的OPEN操作,是一定要一个一个来才行的,不能嵌套(我认为),但也许是ADO开发人员的疏忽,或者是多线程操作的测试不够,他们并没有在这一操作上加入锁定机制,故而会产生相应的错误。这时,如果以一个程序员的眼光来看这个问题,就可以说:它在这一部分没有处理好,那么我就把这一部分补充好,使它避免这个错误。但如果是从一个纯客户的眼光来看,就会说:ADO的多线程是不安全的,以后不要用它,或者宁可多浪费点资源,还是用其它的(土?笨?)办法吧。
关于打开多个ADOConnection时浪费资源,这个是从书上看到的,至于对程序运行的性能有多大影响,我们并没有一个量化的数据,说到这里,就很佩服李维的态度,他在介绍“dbExpress”时,就做了很多查找、读取数据的测试实例,用实在的数据来比较“dbExpress”和“BDE”的优劣,那么对于多个ADOQUERY引入各自的ADOConnection,究竟在效率和性能上和共用一个ADOConnection有多大区别,如果dirk有兴趣,倒不妨用实例测试一下。
互相讨论,不在于最后谁对谁错,关键在于和同行进行交流,了解和思考了一些更新的东西。不过现在很讨厌自己说话老是语锋逼人,唯我独尊的情形了,搞的别人都不好发言,自己也觉得很没趣,所以最近也深自收敛。其实很希望别人能有理有据的批驳自己,可惜[
]!是不是当年的独孤求败也是这份心境,不得而知[
]。