跟贴请点击 http://www.huihoo.com/cgi-bin/forum/viewthread.php?tid=514
作者 | 文章标题 CORBA多线程 | |
新手上路 贴子数量 : 48 注册日期 : 3/1/2002 在线情况 : 离线 |
发表于: 4/9/2002 - 07:06 | |
我的开发环境是win2000+bcb5.0+visibroker4.0
请问,怎样在corba的服务器端实现多线程,以及共享冲突,哪儿有实例呀? 多谢! | ||
版主 贴子数量 : 203 注册日期 : 11/16/2001 在线情况 : 离线 |
发表于: 4/9/2002 - 08:30 | |
POA线程策略有两个:SINGLE_THREAD and ORB_CONTROL.
注意, 这里讲的是ORB_CONTROL,不是POA_CONTROL,可以理解为POA的多线程表现是由ORB提供的。 对于后者,corba标准里没有规定如何实现,但一般有三种实现: 1.request per thread, 对每个请求开一个线程 2.client per thread,对每客户端开一个线程 3.thread pool,线程池 一般来讲,线程池就够了(Orbix2k默认状态就是这样的) 对于一些存在线程不安全的servant,避免共享冲突,需要加入一些mutex,可以找到一些 提供线程控制的软件包,如ACE,rogueware 。 ORbix2k用它自己做的线程控制库(你可以装一个试试, 它有大量的文档和例子来讲线程控制) cheers | ||
版主 贴子数量 : 62 注册日期 : 2/28/2002 在线情况 : 离线 |
发表于: 4/9/2002 - 09:54 | |
VisiBroker 的多线程策略包括:
1.thread pooling 2.thread-per-session. VisiBroker Server 缺省方式是“thread pooling” Cbuilder5 中有 Corba 的例子:.. CBuilder5\Examples\Corba\corbamidas , 里面有线程互斥的代码,你可以参考一下。 | ||
新手上路 贴子数量 : 48 注册日期 : 3/1/2002 在线情况 : 离线 |
发表于: 4/10/2002 - 01:05 | |
我在服务器端有两个事件循环,一个是orb接受客户的请求,还有一个是windows的,orb->run()后,orb就进入了它的事件循环,但windows的事件循环不知怎样进入? | ||
版主 贴子数量 : 203 注册日期 : 11/16/2001 在线情况 : 离线 |
发表于: 4/10/2002 - 06:53 | |
http://www2.iona.com/MinervaRoot/index.jsp?action=article&catId=_0&articleURL=/support/articles/1206.773.xml
希望有所启发。 | ||
版主 贴子数量 : 62 注册日期 : 2/28/2002 在线情况 : 离线 |
发表于: 4/12/2002 - 03:51 | |
可以在 Cbuilder 主程序中 new 一个新的线程,将orb->run()放在新线程中执行。我试过,可以。 | ||
新手上路 贴子数量 : 38 注册日期 : 3/15/2002 在线情况 : 离线 |
发表于: 4/15/2002 - 14:06 | |
在ORBIX vc6。0中 GUI 编程 ,来开辟一个线程来处理ORB->RUN();
It is ok! i do it. | ||
新手上路 贴子数量 : 3 注册日期 : 7/13/2002 在线情况 : 离线 |
发表于: 7/13/2002 - 13:24 | |
orbix2k+VC6.0中, 如果开辟一个线程来运行orb->run(),那么如何
使该线程安全地退出呢? 还有一个问题: 如果在线程中用: while (::WaitForSingleObject(eventExit, 0) != WAIT_OBJECT_0) { if (orb->work_pending()) { perform_work() } } 那么可以看到, 这个程序将占用99%的系统资源, 不知道如何解决? | ||
COPYRIGHT © 2001-2002 huihoo.com E-mail:[email protected] |