gpt4 book ai didi

redis - StackExchange.Redis - 等待锁的最佳方式

转载 作者:IT王子 更新时间:2023-10-29 06:14:41 29 4
gpt4 key购买 nike

我有以下方法等待 Redis 键的独占锁。此方法有效,但我想知道是否有没有 for 循环和 Thread.Sleep 的更好方法。

    /// <summary>
/// wait up to 2 seconds to achieve a lock!
/// The lock is good for a maximum of 3 seconds
/// </summary>
/// <param name="codeID"></param>
internal void WaitForSingleUseLock(CodeID codeID)
{
var key = _redemptionRepo.SingleUseCodeLockPrefix + codeID.Value;
var expiration = TimeSpan.FromSeconds(3);
for (var i = 0; i < 20; i++)
{
var lockAchieved = _cacheRepo.LockTake(key, "1", expiration);
if (lockAchieved)
{
break;
}
Thread.Sleep(TimeSpan.FromMilliseconds(100));
}
}

最佳答案

我唯一可以建议不同的是将 pub/sub 视为一个侧 channel (意思是:另外,而不是替代)以指示锁 可能 现在可用的时间 - 即发布时释放,并使用 sub 释放计时器(通过监视器或异步等待句柄)。

除此之外:没有。 Redis 没有挂起队列的概念。您或许可以可能使用列表构建一个,但是...

关于redis - StackExchange.Redis - 等待锁的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30112515/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com