Delphi中MIDAS线程模型种类(MIDAS之四)

Delphi中MIDAS线程模型
  (1)Single
     代表所产生的In-Process COM程序是一个单一线程的程序,一次只能接收一个client发出来的request,由于是循环的操作,所以不会有多任务同时进行的问题,你的COM程序不需要编写多任

     务处理的部分.
  (2)Apartment
     代表每一个Remote Data Module所产生的instance一次只能处理一个前台发出的request,可是如果同时创建多个In-Process COM程序,那么每个COM程序都会有一个线程来处理,每个
     instance所处理的数据是安全的,可是你必须防止一些共享变量的冲突.
  (3)Free
     该线程模式可以让Remote Data Module产生的每个instance通过各自的线程处理每个前台发出的request,所以Remote Data Moudle本身必须采用多线程的程序写法,你必须保护每
     个instance所处理的数据区域不会互相冲突..当使用ADO数据集时,推荐使用Free模型.
  (4)Both
     与Free相同,除了所有对应前台界面的callback是连续的以外.
  (5)Neutral
     此种模式允许多个前台程序在同一个时间以不同的线程来调用Remote Data Module,不过COM对象必须确保不会有前台程序调用的冲突,你要确定每个线程在访问全局变量及实例数据时,不

     会发生任何冲突.这个模式只适用在COM+.

时间: 2024-09-30 19:27:04

Delphi中MIDAS线程模型种类(MIDAS之四)的相关文章

Delphi中MIDAS程序的实例化模型种类(MIDAS之三)

Delphi中MIDAS应用程序COM服务器实例化模型种类  (1)Internal Instance     创建一个In-Process的COM程序,即DLL服务器.  (2)Single Instance     如果每个客户程序都运行服务器程序的一个实例,则使用该模型.就是每个连上线的前台程序,在服务器上都会有一个对应的应用程序服务器被运行.因此每个前台发出来的查询都会有各自      独立Process的应用程序来处理,根本无所谓排队的问题.但是它会比较占用系统资源,影响服务器整体的运

Delphi中的线程类(1)

Delphi中有一个线程类TThread是用来实现多线程编程的,这个绝大多数 Delphi书藉都有说到,但基本上都是对TThread类的几个成员作一简单介绍,再 说明一下Execute的实现和Synchronize的用法就完了.然而这并不是多线程编程的全部,我写此文的目的在于对此作一个补充. 线程本质上是进程中一段并发运行的代码.一个进程至少有一个线程,即所 谓的主线程.同时还可以有多个子线程.当一个进程中用到超过一个线程时,就 是所谓的"多线程". 那么这个所谓的"一段代码

Delphi中的线程类 - TThread详解<转>

Delphi中有一个线程类TThread是用来实现多线程编程的,这个绝大多数Delphi书藉都有说到,但基本上都是对TThread类的几个成员作一简单介绍,再说明一下Execute的实现和Synchronize的用法就完了.然而这并不是多线程编程的全部,我写此文的目的在于对此作一个补充.线程本质上是进程中一段并发运行的代码.一个进程至少有一个线程,即所谓的主线程.同时还可以有多个子线程.当一个进程中用到超过一个线程时,就是所谓的"多线程".那么这个所谓的"一段代码"

Delphi中的线程类(2)

首先就是构造函数: constructor TThread.Create(CreateSuspended: Boolean); begin inherited Create; AddThread; FSuspended := CreateSuspended; FCreateSuspended := CreateSuspended; FHandle := BeginThread(nil, 0, @ThreadProc, Pointer(Self), CREATE_SUSPENDED, FThrea

Delphi中创建MIDAS服务器并注册(MIDAS之二)

Delphi中如何创建并注册MIDAS应用程序服务器COM程序   Delphi提供一些向导(如:RemoteDataModule,Automation Object,TypeLibrary)来自动产生COM程序的结构.   (法1)创建一个普通应用程序服务器        新建一个普通工程,然后通过New->Other->Multitier->Remote DataModule,来自动新建一个COM服务器结构.        注: 要注册创建的MIDAS应用服务器,可以运行应用程序或者

Delphi中MIDAS前台程序如何连到后台(MIDAS之五)

Delphi中MIDAS前台程序连接到后台应用程序服务器  (1)SocketConnection:     只要前台计算机安装有TCP/IP的通信协议即可,但是Application Server上必须要有对应的SocketServer程序scktsrvr.exe  (2)DCOMConnection:     如果前台计算机系统是Win95,则必须安装DCOM form Win95(去Microsoft网站下载),如果系统是Win98,Me,NT等,则已经包含DCOM Library  (3

Delphi中MIDAS是什么(MIDAS之一)

   Delphi中MIDAS到底是什么呢?和他相关组件是什么呢?   MIDAS(Multitiered Distributed Application Services)多层分布式应用服务   Delphi所提出的Multi-Tier结构是把原来的Two-Tier前台应用程序内的dbExpress,ADO,BDE,SQL Link,DataMoule,拿到另外一台NT服务器(就是所谓的应用程序服务器),而前台程序只剩下一    个可执行文件及MIDAS.DLL,而移到NT服务器上的DataM

Delphi中MIDAS如何控制前台权限(MIDAS之六)

Delphi中MIDAS如何控制前台权限  (1)原理:     前台程序与应用程序服务器之间是通过DCOM机制的运行来传送数据,DCOM对象的安全机制是以Windows NT的安全模块为构建基础,换句话说,要设置某个用户是否有远程运行DCOM对象的能       力,最基本的条件是这个用户一定要被加入Windows NT的用户组内,如此才有资格连上Windows NT Server,并进而依据DCOM的权限来决定是否能够运行指定的应用程序服务器.  (2)工具:     在系统目录下有一个DC

线程-Delphi中的Dispose的问题

问题描述 Delphi中的Dispose的问题 我写了这样的一个Delphi程序: 1号线程从数据库中取出信息,然后放到一个队列Q中; 2号线程从Q中取出信息进行处理. 当线程2从队列Q中取出数据进行处理之后就会使用Dispose来释放它,然后再取,再处理,再释放 但是出现问题,内存会一直增长,当我把里面Dispose去掉之后,也就是2号线程从队列取出信息,进行处理,但是不释放 这样的两种方式,最后的内存泄露的情况是一样的,所以很是疑惑!! 解决方案 这一问题,主要是线程中创建占用内存,没以有及