ISubscriber,.Subscribe()和.Unsubscribe()范围

时间:2014-08-05 14:50:27

标签: c# multithreading asynchronous stackexchange.redis

我试图理解在订阅(和取消订阅)通知方面特别使用SE.Redis对象的范围。

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

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

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

是否可以安全/有效地实施此模式,或者我是否尝试过多地简化此问题并且需要每个进程的订阅管理器&#39;协调我的订阅?

0 个答案:

没有答案