多线程与事务并发
Author:gnicky URL: http://blog.csdn.net/loconfuse/
“在实际问题中,不要在事件处理线程中做任何主要工作,而应当使用另外的线程作为工作线程,并允许事件处理线程快速地返回到处理事件等待状态”。这句话看起来非常有道理,多线程的优点要充分体现!那么线程处理要完成的工作以及业务要处理的工作如何划分?
实际上这个问题可以归结为控制驱动体系与商业逻辑层的进程管理协调,而事务的并发性的考虑与设计在OOD阶段注重,也就是说在OOD的阶段就必须考虑到之后的整体的进程中的多线程问题,从而在其中加入事务并发控制。
简单的描述抽象图如下:
看一下书本推荐的技巧:“GUI事件处理代码应当相对简短,让事件处理线程从处理器得到返回,并准备处理下一个触发的事件,如果必须执行更长的任务,应该将工作传递给另外的一个线程进行处理。这有助于保持用户界面处于激活状态并具有高度灵敏“
这个推荐同样看起来非常有道理,可是,以线程为例,当按钮按下,处理数据库更新交给了另外一个线程处理,用户界面激活,用户再度按下删除按钮,调用其他能够影响到数据修改的数据的代码,这样执行的结果与用户期望的,对于用户来说也许是莫名其妙的。
对于单机的并且是只能单实例运行的程序而言,为了这种体现多线程的技巧,必须去实现数据处理事务的并发性支持,代价也是需要考虑的。
因此所谓的技巧,也是因地制宜的!
如有错误观点,请留言指正!