微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – 如何多线程“跨层”具有相关ID的单例而不锁定?

因此,我们使用具有相关ID的公共状态上下文单例进行集中式日志记录.目的是在整个过程中跟踪id并关联不同的层.

状态上下文由多个dll和多个用户访问.

多线程发挥作用时遇到困难:

>进程1已被用户1触发
>相关ID设置为{1}
> DLL A访问状态上下文并获取相关ID {1}
>在流程1完成之前,流程2已由用户2解雇
>关联ID设置为{2}
> DLL B来自第一个进程访问状态上下文,其相关标识为{2}时应为{1}

我们如何解决这个问题?

我们认为锁定不是我们的解决方案吗?还有其他想法吗?

这是一张图

(S)->[  CorrelationID {get;set}  ]                  
               ^           ^            ^
    U1 <-->    |           |            |                 O  
    U2 <--> [DLLA] <-->  [DLLB] <-->  [DLLC]       <-->  | |
    U3 <-->         
            {Web}  <--> {Domain} <-> {Data Access} <--> {DB}

    (<--                 Process / Thread           -->    )

{} =可能的DLL示例

每个用户的进程应该有1个相关ID

解决方法

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐