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是一种代理模式
单向和双向针对连接来说的。
本文分享自微信公众号 - 云原生技术爱好者社区(gh_64358c8a941d),作者:半夏透心凉
原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。
原始发表时间:2019-05-22
本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。
我来说两句