【发布时间】:2014-01-25 10:54:56
【问题描述】:
我是响应式的新手,但这个想法激发了我的好奇心,所以我做了一些响应式变量,但我不知道这是否是最佳实践,然后我会将这个线程安全。
课程如下:
public class RxVar<T>:IObservable<T>
{
T _value;
public T Value
{
get{
return _value;
}
set{
if (!_value.Equals(value))
{
onChange(_value);
_value = value;
}
}
}
event onValChange onChange = delegate { };
delegate void onValChange(T val);
IObservable<T> _observable;
public RxVar() {
_observable = Observable.FromEvent<onValChange,T>(ev => onChange += ev, ev => onChange -= ev);
}
public IDisposable Subscribe(IObserver<T> observer)
{
return _observable.Subscribe(p=>observer.OnNext(p));
}
}
信号量示例
_semaphoreSlim.WaitOne();
if (!_value.Equals(value))
{
onChange(_value);
_value = value;
}
_semaphoreSlim.release();
好的,我想让这个线程安全,但我害怕死锁。所以,
最好使用lock 或信号量,或者由于反应性质,不需要它?
谢谢。 :)
【问题讨论】:
标签: c# multithreading locking system.reactive semaphore