我想知道ServicePartitionClient类是否是线程安全的

时间:2017-04-24 10:08:25

标签: c# azure azure-service-fabric

根据我的理解,基于在线信息,ServicePartitionClient类可以多次重复使用。

但是我在microsoft文档中找不到这个类是否是线程安全的。

如果没有,我想知道在微服务环境中重用这样一个类的常见最佳做法是:每次可能lock() { ... }或每次调用创建一个新实例(在我的情况下不是很有用)

非常感谢。

(此时我的代码中我正在使用一些静态实例,并且所有内容似乎都正常工作,但可能会在以后加载时失败...)

编辑: 我理解在某些情况下即使不是线程安全的,也可以很容易地重用该类(例如,在某个队列上工作的后台线程可以实例化该类一次并重复使用它没有问题)。

但是在其他常见情况下(如接收调用并可能需要调用另一个微服务的微服务)如果类不是线程安全的话,重用可能会变得更复杂。

这个类的性质是执行I / O操作,所以我认为由于竞争条件,锁可能非常昂贵。

另外在我的理解中,该类在其状态中维护其目标服务的最后解析地址,并且仅在非成功调用的情况下重新解析它。因此,每次实例化一个新类也可能很昂贵,因为我认为在这种情况下,新实例化的ServicePartitionClient类将被强制每次联系命名服务以解析服务地址(两次网络往返)。

所以我认为Microsoft应该为这个类提供一个线程安全的实现。

(抱歉我的英语不好)

0 个答案:

没有答案