我试图理解在订阅(和取消订阅)通知方面特别使用SE.Redis对象的范围。
我想做类似以下的事情,等待远程节点指示它已经更改/释放了资源(一个非常愚蠢的分布式信号量):
var t = new TaskCompletionSource<bool>();
sub.Subscribe(key, (c, v) =>
{
t.TrySetResult(true);
sub.UnsubscribeAll();
});
return t.Task;
我相当肯定这是错误的:)并且在ConnectionMultiplexer
共享的多线程环境中,我可能会在一个线程订阅特定RedisChannel
的竞赛中结束而另一个取消订阅。
是否可以安全/有效地实施此模式,或者我是否尝试过多地简化此问题并且需要每个进程的订阅管理器&#39;协调我的订阅?