当前位置:  开发笔记 > 编程语言 > 正文

.NET多线程访问共享登录会话

如何解决《.NET多线程访问共享登录会话》经验,为你挑选了0个好方法。

我正在开发一个Web API应用程序,它通过API连接到后端系统.使用API​​的一个挑战是它需要维护一个远程会话,该会话在Web API的所有线程/请求之间共享.会话每隔几个小时到期,需要通过登录"刷新".

我当前实现的简化版本如下:

private static Object loginLock = new Object();

if(!Api.IsLoggedIn) 
{
    lock(loginLock)
    {
        if(!Api.IsLoggedIn)
        {
            Api.Login();
        }
    }
}

// Do stuff with the API

在高并发负载下,当需要登录时,线程会在锁定时堆叠起来,并在成功登录时一次通过一个线程,这会导致性能瓶颈.

我正在寻找的是一种在需要登录时阻止所有线程的方法,但是在成功登录后让它们全部通过.

有没有更好的模式来解决这个问题?谷歌搜索似乎表明,ReaderWriterLockSlim或者Monitor Wait/Pulse/PulseAll可能是比标准锁更好的候选人.

推荐阅读
惬听风吟jyy_802
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有