apartment线程问题?(300分)

  • 主题发起人 主题发起人 vxdwan
  • 开始时间 开始时间
V

vxdwan

Unregistered / Unconfirmed
GUEST, unregistred user!
在<<李维分布式多层应用系统编>>中介绍了开发apartment线程形服务器端应用程序,
但我看了三四遍,还是弄不懂,CoinitializeEX,CoUninitialize,
CoMarshalInterThreadInterfaceInStream这几个函数到底怎么使用,
李维又没有实际代码可供参考,就指出服务器性能的问题在哪而已,具体如何实现,
请各位高手帮忙,不胜感激!!!!(我在我定义的方法中实现apartment线程)
 
study and up!
 
其实你不用自己编写代码实现的,DELPHI5已经帮你实现了----即"远程数据模块"在apartment
线程下,它会自动根据客户请求生成单独的实例去支持--也就是apartment线程模式
李维的书是阐述了这个功能的原理,只需要知道就行了,如果你用DELPHI5以下的版本来开发,
可能需要这方面的知识,在DELPHI5及以上,它就已经帮你做好了。
 
这都是COM方面的东西,如果想详细了解,要看一些COM方面的书,
比如潘爱民的《COM的原理和应用》不错,可以搞一本看看,需要
一点C++知识和多线程就可以应付了。
 
如果你想了解那如何使用Windows SDK编程的方法来编写一个COM组件,请参考《COM原理与
应用》,否则你可以只立足于应用Delphi对COM的封装。
李维的那一段描述,我开始的几遍也没看懂想干什么,到后来根据自己的理解和认识也做了
一个类似的例程后才基本理解了。事实上他主要是想告诉读者,在COM组件使用Apartment
线程的情况下,如果一个客户端程序是以多线程的方式调用组件的话,比起只用一个线程来
调用组件也不会有任何的性能提高,因为服务器只针对每一个客户端进程建立一个对应的线
程与之服务,而不会对每一个客户端进程中的每一个线程各建立一个线程进行服务,含有多
线程的客户端进程中的各个线程调用请求是被排队处理的。
 
CoMarshalInterThreadInterfaceInStream这个函数怎样用呀。
 
后退
顶部