peakzhang 发表于 2008-1-7 20:25:01

对应用模式语言开发应用级网关的一些疑惑

ACE应用第一章应用模式语言开发应用级网关中讨论了管理消费者消息发送的两种模式。一种是在reactor的事件循环中处理的单线程模式;
一种是使用主动对象的多线程模式;
使用单线程模式的话就不能让某个消费者阻塞了线程,使用主动对象则每个消费者可以在自己的线程中独自运行而不影响其他消费者。但每个主动对象需要创建一个独立的线程,如果网关有成百上千个消费者的话,那系统里面不是要创建成百上千个线程,这样系统可能会不堪重负。这样主动对象是不是就不适合这种有很多连接的应用呢?初学ACE,不知我的理解是否有误?

peakzhang 发表于 2008-1-7 20:25:10

理解有误。主动对象用的是ACE_Task,并不是每个用户请求启动一个线程这样的处理方式,而是可用使用一个线程池。共同处理队列中的请求。

peakzhang 发表于 2008-1-7 20:25:27

我看ACE_TASK的说明,每个TASK可以有一个或多个线程。如果不是每个用户启动一个线程的话,那是不是多个用户共享使用一个ACE_TASK?

peakzhang 发表于 2008-1-7 20:25:38

当然了,共享减少了系统的开销和损耗,使得效率得到提升。ACE_Task内置消息队列,对要处理的消息,自动排队,异步处理。

A\         /
B- Queue -Multi Thread Process
C/         \
页: [1]
查看完整版本: 对应用模式语言开发应用级网关的一些疑惑