多线程的使用

1-1 多线程的基本概念

     WIN 98/NT/2000/XP 是个多任务操作系统,也就是:一个进程可以划分为多个线程,每个线程轮流占用CPU 运行时间和资源,或者说,把CPU 时间划成片,每个片分给不同的线程,这样,每个线程轮流的“挂起”和“唤醒”,由于时间片很小,给人的感觉是同时运行的。
     多线程带来如下好处:(自己阅读)
     1)避免瓶颈;
     2)并行操作;
     3)提高效率;
     在多线程中,通过优先级管理,可以使重要的程序优先操作,提高了任务管理的灵活性。
     另一方面,在多CPU 系统中,可以把不同的线程在不同的CPU 中执行,真正做到同时处理多任务(Win 98 只是模拟的,而Win/NT/2000是真正的多CPU同时操作)。

     多线程的两个概念:

     1)进程:也称任务,程序载入内存,并分配资源,称为“一个进程”。
    注意:进程本身并不一定要正在执行。进程由以下几部分组成:
     a>一个私有的地址空间,它是进程可以使用的一组虚拟内存地址空间;
     b>程序的相关代码、数据源;
     c>系统资源,比如操作系统同步对象等;
     d>至少包含一个线程(主线程);

     2)线程:是程序的执行单位(线程本身并不包括程序代码,真正拥有代码的是进程),每个进程至少包括一个线程,称为主线程,一个进程如果有多个线程,就可以共享同一进程的资源,并可以并发执行。
     线程是进程的一个执行单元,是操作系统分配CPU 时间的基本实体,线程主要由如下两部分组成:
     a>数据结构;
     b>CPU 寄存器和堆栈;
     一个进程中的线程,可以独立运行,也可以控制另一个线程的运行。

     请注意:
     多线程不能滥用,书上提到了多线程的几个缺点(自阅)。

     1-2 Tthread 对象

     虽然Windows 提供了比较多的多线程设计的API 函数,但是直接使用API 函数一方面极其不方便,而且使用不当还容易出错。为解决这个问题,Borland 公司率先推出了一种Tthread 对象,来解决多线程设计上的困难,简化了多线程问题的处理。
     应该注意,Tthread 对象是没有实例的,它和界面的交流,主要依靠主窗体(主VCL线程),这和其他对象使用上有些区别。

    一、Tthread 对象的主要方法

     构造线程:

     constructor Create(CreateSuspended:boolean)

     其中:CreateSuspended=true   构造但不唤醒
                                              false 构造的同时即唤醒

     也可以用如下方法

     inheried Create(CreateSuspended:boolean)


     挂起线程:

     suspend
   
     (把线程挂起的次数加一)

     唤醒线程:

     resume

     (注意:注意这个属性是把线程挂起的次数减一,当次数为0 时,即唤醒。也就是说,线程挂起多少次,唤醒也需要多少次。同时挂起的时候将保持线程的地址指针不变,所以线程挂起后再唤醒,将从挂起的地方开始运行)

     析构(清除线程所占用的内存):

     destroy

     终止线程(后面会具体讨论):

     Terminate

     二、线程应用的简单例子:

     下面通过一个例子说明上述方法的应用。我们知道,循环是独占性最强的运行方式之一,现在希望建立两个线程对象,实现循环的并行运行。具体方法如下:

     File---New---Thread Object

     这就自动在主Form中建立了一个线程单元(在对话框里写上线程名字),默认的名字是Unit2。同样方法建立第二个线程单元Unit3。

  • 23
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值