在《WCF 并发的本质》中,我们谈到了WCF提供的三种不同的并发模式,使开发者可以根据具体的情况选择不同的并发处理的策略。对于这三种并发模式,Multiple采用的并行的执行方式,而Single和Reentrant则是采用串行的执行方式。串行执行即同步执行,在WCF并发框架体系中,这样的同步机制是如何实现的呢?

实际上,WCF并发框架体系下针对Concurrency.Single模式的实现非常简单,其本质就是对InstanceContext进行加锁。如果采用反编译工具查看InstanceContext的定义,你会发现InstanceContext类中定义了一个类型为System.Object名为ThisLock的内部属性,而该属性实际上就是对基类CommunicationObject同名属性的引用,相关代码入下所示。WCF就是通过对InstanceContext的ThisLock进行加锁,确保了对InstanceContext的同步访问。

class InstanceContext : CommunicationObject, IExtensibleObject<InstanceContext>
   2: {
//其它成员
object ThisLock
   5:     {
   6:         get
   7:         {
base.ThisLock;
   9:         }
  10:     }
  11: }
class CommunicationObject : ICommunicationObject
  13: {
//其它成员
object ThisLock { get; }
  16: }

相关文章:

  • 2022-01-19
  • 2022-12-23
  • 2022-12-23
  • 2021-06-11
  • 2021-12-19
  • 2021-05-17
  • 2021-10-15
  • 2022-03-08
猜你喜欢
  • 2021-07-07
  • 2022-01-30
  • 2021-08-07
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-06-25
相关资源
相似解决方案