1

我试图了解在订阅(和取消订阅)通知领域专门使用 SE.Redis 对象的范围。

我想做类似以下的事情来等待远程节点指示它已更改/释放资源(一个非常愚蠢的分布式信号量):

var t = new TaskCompletionSource<bool>();
sub.Subscribe(key, (c, v) =>
{
    t.TrySetResult(true);
    sub.UnsubscribeAll();
});
return t.Task;

我相当肯定这是错误的 :) 并且在ConnectionMultiplexer共享的多线程环境中,我可能最终会陷入一场比赛,一个线程订阅特定的线程,RedisChannel而另一个线程取消订阅它。

是否有可能安全/有效地实现这种模式,或者我是否试图过多地简化这个问题并且需要一个每个进程的“订阅管理器”来协调我的订阅?

4

0 回答 0