基于delphi的多线程同步方法的设计与实现

基于delphi的多线程同步方法的设计与实现

ID:38265933

大小:151.94 KB

页数:3页

时间:2019-05-25

基于delphi的多线程同步方法的设计与实现_第1页
基于delphi的多线程同步方法的设计与实现_第2页
基于delphi的多线程同步方法的设计与实现_第3页
资源描述:

《基于delphi的多线程同步方法的设计与实现》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、第30卷第l0期电子工程师Vol.30No.l02004年l0月ELECTRONICENGINEEROct.2004基于Delphi的多线程同步方法的设计与实现ll2朱晓峰,薛质,周锦标(l.上海交通大学,上海市200030;2.中国卫星海上测控部,江苏省江阴市2l443l)【摘要】多线程程序具有广泛的应用前景,特别是在网络应用程序中,可以提高带宽利用率和程序反应速度。为了达到下载大型网站的目的,在编写离线浏览软件的过程中,需要下载大量的Web文件。其中一个技术要点就是多线程下载问题。为了解决这一难题,分析了进程的原理和机制,研究了Windows系统下多线程程序的设计方法,提出了在D

2、elphi中实现多线程同步的新方法,提供了程序的设计框架,解决了一些技术难题,并在大型网站文件系统的下载软件中进行了试验与运用,为基于Delphi的多线程程序提供了具有普遍意义的设计思路。关键词:多线程,线程同步,Delphi中图分类号:TP3ll.l的4GB空间独立运行。当关闭一个进程时,所有分配0引言给它的资源就会自动关闭。Windows系统扩展了进程多线程程序在网络程序中有广泛的应用。例如在的概念,每个进程中有l个或多个线程存在。线程是[2]服务器程序中,为了同时处理多个请求,必须应用多线程序中真正执行的部分。Windows是一个真正的多程;在客户端程序中,为了提高下载速度,同

3、时使用数任务操作系统。在任何一个时刻,都有多个线程在工个甚至上百个线程。国内自从网络蚂蚁实现了多线程作。分配给每个线程的是一个个时间片(guantum)。下载以来,多线程下载技术得到了普遍的应用,特别是在Windows95下的是抢占式多任务(preemptivemulti-在宽带或者局域网条件下,该技术能成倍地提高下载tasking),当一个任务的时间片开始时,它就强占原先速度。但是,目前网络上常用的多线程下载程序存在任务,这样,任何一个线程都不会独占CPU,即使一个着程序结构不合理的问题,影响了文件下载速度。笔程序陷入死循环也不会影响其他线程。者通过对多线程、进程的原理和机制的研究

4、分析,编写Windows中生成一个线程是很简单的,只要调用了新的程序离线浏览器Webseizer,利用该离线浏览器WindowsAPI中的CreateThread函数就可以。可以使进行文件下载,在同样线程数目条件下,下载速度比一用SuspendThread函数将线程挂起,调用ResumThread般的离线浏览器(例如Webzip,Teleportpro)快l.5倍恢复线程。真正有难度的是线程的同步问题。~2.5倍。2线程同步与数据保护1基本理论在多线程的程序中,常常是多个线程使用一个数进程是指一个程序在给定的操作系统中的一个执据区,或者使用同一个资源。为了避免同时操作时发[l]行过程

5、。它具有动态性、并发性、独立性、相互制约生错误,必须有数据保护机制,也就是所谓的“线程同性等特征。进程至少有3个基本状态,分别是运行状步”问题。态、就绪状态、等待状态。就绪状态是指进程已经满足Windows中用于同步控制的函数很多,主要分为了运行的条件,只等待系统分配时间片以便运行。等以下几大类:Critical-Section、Event、Mutex、Wait、Asyn-待状态是指等待某一条件而暂时不能运行的状态,等chronous等。待状态可以细分为挂起状态(人为使之等待)、睡眠状以Event类型的使用为例来说明线程同步的过态、资源等待状态(得不到需要的资源而等待)等。程。首先用

6、CreateEvent函数生成一个Event对象,然进程在Windows系统中是指已经载入内存的应用后在需要使用线程同步的地方,用WaitForSingleObject程序。在Windows95中,每个程序可以使用4GB的等Wait类型函数得到资源的使用权。SetEvent、Reset空间。这个空间是虚拟存储的空间,每个进程在自己Event函数可以用来人为地设置Event对象的状态,以达到得到和释放资源使用权的目的。收稿日期:2004-06-l9;修回日期:2004-09-25·57··计算机与自动化技术·电子工程师2004年10月笔者利用Deiphi语言进行了程序的开发和编写,en

7、d;该语言的优点之一是它有一整套线程同步方法,可以这时,如果有其他本类函数在使用数据时,Task-很方便地使用。首先,Deiphi将线程封装为TThreadsect.Enter就会一直等待,直至其释放资源;而在本函类,可以自动调用Windows的CreteThread等函数进数对数据进行操作时,其他函数也不能使用数据,直至行线程的管理。其次,它提供了synchronize函数,这Tasksect.Leave释放资源。样可以在线程中安全调用VCL,在使用系统

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。