1:ice的并发情形下线程安全问题?
多线程意味着,来自客户的多个调用可以在服务器中并发执行。事实上,在同一个servant 中,以及在同一servant 的同一个操作中,都可以有多个请求在并行执行。因此,如果在操作实现中,涉及到对非栈存储的操纵(比如servant 的成员变量、全局变量,或静态变量),你必须对数据访问进行互锁,以防止数据损坏。
1.1: 如何确定线程池大小依据?
1.2: 内部调用至少使用2个线程
配置:
动态配置:
name.Size=3
name.SizeMax=5
name.ThreadIdleTime=10
2:同步和异步问题?
同步编程模型:发出调用的线程会阻塞到操作返回。每个客户占有一个线程。
异步编程模型:
Client:
异步方法调用(AMI):使用AMI发出远地调用,在Icerun time等待答复的同时,发出调用的线程不会阻塞。相反,发出调用的线程可以继续进行各种活动,当答复最终到达时,Ice run time会通知应用。通知是通过回调发给应用提供的编程语言对象的。
Server:
异步方法分派(AMD):使用AMD时,服务器可以接收一个请求,然后挂起其处理,以尽快释放分派线程。当处理恢复、结果已得出时,服务器要使用Ice run time提供的回调对象,显式地发送响应。
3:oneway、twoway和双向和单向的关系
oneway、twoway是一种代理模式
单向和双向针对连接来说的。