Last Modified: 2003.01.21 19:00 PM 参与讨论的朋友有:mep,WangTing,sunmike1000,orbat,Allen 讨论总结: 。线程池/库的实现 。ORBacus(IONA提供)要重点研究,国内的很多产品基于此产品之上开发。 。orbas应尽早实现notification,因为它是一个很重要的服务 。实时CORBA的应用可能要借助实时OS,实时DB所提供的一些功能 。下周讨论议题: --线程池/库的具体实现 --RealTime CORBA规范的学习和交流 ... ----------------------------------- 讨论内容: Allen Long 说: 大家好,今天我们讨论嵌入、实时CORBA的一些具体实现细节。orbas如何做才能支持这些? mep 说: 大家好 Young Yang 说: hello, everyone Allen Long 说: 我正在看IONA的ORBacus,Orbix/E,大家有使用过这两个产品吗? mep 说: 实时CORBA的支持有两个版本,1.0和2.0 mep 说: 没有使用过 mep 说: 1。0和2。0讲述的是不同的内容,而不是版本升级的关系 2。0的定义了动态调度(dynamic secheduling) Allen Long 说: IONA的这两款产品是基于CORBA 2.3子集的,没有实现最新的realtime corba 规范 mep 说: 是的。 Allen Long 说: sunqi你给大家多介绍一下orbacus sunmike1000@hotmail.com 说: 呵呵,还是mep来介绍吧 sunmike1000@hotmail.com 说: OB的表兄弟很多的呀 Allen Long 说: 我们想更多分析OB,然后将一些好的东西应用到orbas中。好象国内好多东东都是基于OB的。 mep 说: 我们现在实现的CCM就是基于ORBacus的。 mep 说: ORBacus实现了CORBA2。4规范的内容(CORBA2。3加上local interface) sunmike1000@hotmail.com 说: OB的核心,用了一个开放的线程库jtcthread, Young Yang 说: sunmike, 说说这个线程库的作用 mep 说: 是啊,线程库在realtime CORBA中扮演重要的角色 sunmike1000@hotmail.com 说: 呀,这个库挺有名的,好像是GNU搞出来的,我们tongbroker也用了它。 Young Yang 说: 包括了线程池的功能吗? Young Yang 说: 只是是 for C++ 的吗? sunmike1000@hotmail.com 说: en,我们只有C++版本。线程 Young Yang 说: 是 java like thread for C++ sunmike1000@hotmail.com 说: 线程池的作用是设置资源访问的上限,即多线+线程池+动态分配 sunmike1000@hotmail.com 说: 其实应用服务器中也是这样。 Young Yang 说: 现在你们有没有稳定的线程池可以参考,我要把这部分做到 jfox 的核心中去 sunmike1000@hotmail.com 说: 施密特的系列文章中有一篇专门讲线程池的,我记得huihoo中也有一个人讲过 sunmike1000@hotmail.com 说: OB中的jtc thread就不错。 Young Yang 说: 你说的“施密特的系列文章” 哪里可以看到? sunmike1000@hotmail.com 说: 道格拉斯*施密特呀,就是华盛顿大学的那个牛人呀,搞CORBA的不可能不知道它的。 Young Yang 说: 惭愧,呵呵 Allen Long 说: mep你也收集了一些线程池的资料,可以和YY分享一些 sunmike1000@hotmail.com 说: Douglas C. Schmidt sunmike1000@hotmail.com 说: 就是搞TAO/ACE的那个人,在TAO网站上就可以找到很多他的著作。 sunmike1000@hotmail.com 说: mep应该知道的 mep 说: 我这里只有一些pthread的编程和一本thread pattern的电子书 Young Yang 说: TAO 的作者啊,呵呵 sunmike1000@hotmail.com 说: pthread是SUN自己的线程库吧 Allen Long 说: 文章可以找到,但我们需要一个比较好的线程参考。sunqi你们的TongWeb中的线程部分是如何做的 Wang Ting 说: pthread是SUN自己的线程库吧?? Young Yang 说: mep ,给我分享一下你的电子书,如何? 呵呵 mep 说: 好的, Allen Long 说: 我们另一个朋友hank正在设计多线程部分,但不知道进度如何?随后我联系他 mep 说: 不过有好多M,邮件没有办法发送 Young Yang 说: 用 msn 的传递文件试试 sunmike1000@hotmail.com 说: en,我说一下吧。首先ORB核心初始化的时候创建线程池,其最大线程数与初始线程数均受环境变量、配置文件、ORB参数的制约 mep 说: 好的 sunmike1000@hotmail.com 说: 采用常规的代理模式,即线程池中的线程都是轻量级的,对应重量级的工作线程。 Allen Long 说: pthread不是SUN的,Pthread是一套通用的线程库, 它广泛的被各种Unix所支持, 是由POSIX提出的 sunmike1000@hotmail.com 说: 恩,我知道了,pthread线程是系统线程。 Allen Long 说: 具有很好的移植性 Young Yang 说: 那重量级的线程有缓存吗? mep 说: 是不是重量级的线程表示已分配的线程,轻量级的表示未分配的? Allen Long 说: 那我们如何去支持Pthread呢?Pthread作为一套用户级线程库,我们的orbas的核心线程如何支持它。 sunmike1000@hotmail.com 说: 重量级的线程不可能缓存的,因为其内存消耗和要处理的请求有关,即客户方请求有关。 Young Yang 说: c /c++ 编程应该使用 POSIX 库就可以了 Wang Ting 说: 如果是Java开发的,pthread不一定要支持。 sunmike1000@hotmail.com 说: 按我的经验,与其支持pthread,不如用第三方的thread。pthread和环境有关。 mep 说: pthread是c的线程库,在c/c++版的orbas中需要支持,不过通常pthread的线程库没有native 的线程库效率高 Wang Ting 说: 仅仅是统一的API没有太多的必要 Young Yang 说: 那重量级的线程岂不是每次都新生成,然后消亡? Wang Ting 说: Java自己的线程API已经不错 Wang Ting 说: 只要报Doug Lee的Concurrent的一套API引入就可以了 Wang Ting 说: 然后,做支持one-request/one thread和thread pool的支持库就可以了。 Young Yang 说: Java 编程当然是用 java thread 好 Wang Ting 说: orbas的将来发展如何?引入C++部分吗? mep 说: 可以介绍一下“Doug Lee的Concurrent” Wang Ting 说: 也就是模拟了pthread的一套mutex/semphore/barrier/.. sunmike1000@hotmail.com 说: 好像是这样,因为重量级的线程确实和请求相关,不好重用。 Wang Ting 说: 还是很实用的。 Wang Ting 说: 商业化的应用很多,而且将来的可能引入JDK。(已经是JSR了) Wang Ting 说: 从我的经验看,thread pool的难度不大。 mep 说: 那么大家对于实时线程库是怎么考虑的? Wang Ting 说: mep可以具体讲讲应用背景? Young Yang 说: 大家可否讨论一下 rmi-iiop ? Young Yang 说: 要让 java 的 rmi 使用 rmi-iiop 通信,要做些什么事情? mep 说: 实时线程库需要支持优先级、可调度性的控制(防止优先级反转) Wang Ting 说: 嗯 mep 说: 实现RMI-IIOP,只要是IIOP引擎 Allen Long 说: 有没有实时线程库的规范和参考? mep 说: 规范没有,不过可以参考其他人的实现 Wang Ting 说: 一般的做法怎样?如果是JVM抑或是其他的OS应该会处理这些细节。 Wang Ting 说: 我们在VxWorks做过一些开发。 mep 说: 实时线程库,就如sunqi所说,要控制线程对各种资源(包括CPU资源和其他的资源)的访问 Wang Ting 说: 基本的思路是一个整个就是一个process + multiple taks mep 说: 在java上很难控制,最好是由JVM来支持 mep 说: 在99年提出了realtime java 的JSR,不过没有突破性进展 Wang Ting 说: 嗯 mep 说: realtime java可以参考http://www.rtjava.org Wang Ting 说: Under Construction! Young Yang 说: JSR 001 Wang Ting 说: from the website. mep 说: 对不起,是http://www.rtj.org Young Yang 说: http://www.jcp.org/en/jsr/detail?id=1 Wang Ting 说: thanks. mep 说: 目前有几个参考实现: 一个是timesys mep 说: 其他的参考实现可以认为是realtime java(不过好像不是非常的realtime) Allen Long 说: 回答WangTing,orbas的目标是要在minimum,realtime,embed得到更大发展和更多支持。 mep 说: 他们有GCJ(GNU的java编译器,它把java编译成本地代码)、CVM(就是sun的j2me)好像还有IBM的J9 mep 说: 除了timesys的,其他的好像都不是很地道的realtime的东西 Young Yang 说: timesys 哪里可以找到? mep 说: http://www.timesys.com/ mep 说: 专门从事实时产品的公司 mep 说: 不过realtime java一般都需要realtime的OS和realtime的线程库以及realtime的JVM支持 Wang Ting 说: 从telecom应用看,我想首先是minORB + (any support) + notification services Wang Ting 说: 最为重要。 Wang Ting 说: 这也是orbas的第一步 mep 说: 我也认为notification是最重要的service之一 Wang Ting 说: 然后c++版本 Wang Ting 说: 的orbas. Allen Long 说: notification在IONA中是把它发展成企业级消息中间件。 Wang Ting 说: realtime ORB的要求可能在我的目前的估计下,没有那么紧迫 Wang Ting 说: 对。 Wang Ting 说: Borland则开发了相应的VisiNotify Wang Ting 说: 报价居然和orb一样高。 Wang Ting 说: 而且商业化产品可能对notification services的要求很高:高效率+高可靠性。 Wang Ting 说: 我们上次时尝试使用了openJMS,居然时常会丢掉事件。 Wang Ting 说: 结果换成SonicMQ,就好了。 Wang Ting 说: 这也就对openSource的要求可能更高了。 sunmike1000@hotmail.com 说: 吃饭了。88 Allen Long 说: 还是多种技术的采用。 Allen Long 说: 下周讨论的内容: 。线程池/库的具体实现 。RealTime CORBA规范的交流,请大家事先看看规范。 Wang Ting 说: 好的,我争取又时间看看。 Wang Ting 说: bye