摘要:第七节:在多个线程时空中,把各自的代码塞到一个指定的线程时空运行 以 Ado 为例,常见的方法是拖一个 AdoConnection 在窗口上(或 DataModule 中), 再配合 AdoQuery ,DataSoure, DbGrid 等,就可以实现数据库的访问操作。 这种方式,可以理解为在主线
阅读全文
摘要:第六节: TList 与泛型 TList 是一个重要的容器,用途广泛,配合泛型,更是如虎添翼。 我们先来改进一下带泛型的 TList 基类,以便以后使用。 本例源码下载(delphi XE8版本): FooList.Zip unit uFooList; interface uses Generics
阅读全文
摘要:第五节:多个线程同时执行相同的任务 1.锁 设,有一个房间 X ,X为全局变量,它有两个函数 X.Lock 与 X.UnLock; 有如下代码: X.Lock; 访问资源 P; X.Unlock; X.Lock; 访问资源 P; X.Unlock; X.Lock; 访问资源 P; X.Unlock;
阅读全文
摘要:第四节:多线程类的改进 1.需要改进的地方 a) 让线程类结束时不自动释放,以便符合 delphi 的用法。即 FreeOnTerminate:=false; b) 改造 Create 的参数,让它适合访问 COM 组件。如:在线程时空中能够创建 TAdoConnection; c) 设计一个接口能
阅读全文
摘要:第三节:设计一个有生命力的工作线程 创建一个线程,用完即扔。相信很多初学者都曾这样使用过。 频繁创建释放线程,会浪费大量资源的,不科学。 1.如何让多线程能多次被复用? 关键是不让代码退出 Execute 这个函数,一旦退出此函数,此线程的生命周期即结束。 要做到这一点,就需要在 Execute 中
阅读全文
摘要:第二节:在线程时空中操作界面(UI) 1.为什么要用 TThread ? TThread 基于操作系统的线程函数封装,隐藏了诸多繁琐的细节。 适合于大部分情况多线程任务的实现。这个理由足够了吧? 什么?你要用 windows 的线程 api 来实现多线程? 我可以负责任地告诉你,如果你用 api 来
阅读全文
摘要:第一节:初识多线程 1.为什么要学习多线程编程? 多线程(多个线程同时运行)编程,亦可称之为异步编程。 有了多线程,主界面才不会因为耗时代码而造成“假死“状态。 有了多线程,才能使多个任务同时执行,最大化利用CPU资源,提高效率。 在安卓编程中,要求必须是多线程,主界面中的代码只要耗时几秒钟,就会触
阅读全文