/// <summary> /// 单线程处理逻辑 /// </summary> /// <param name="d"></param> public void execute(ExecutorDelegate d) { lock (this) { tex.WaitOne(); d(); tex.ReleaseMutex(); } }
/// <summary> /// 通过mutex和lock两把锁确保同一时间只有一个线程执行委托; /// </summary> /// <param name="func"></param> private void ExecuteEx(ExecutorDelegate func) { lock (this) { mutex.WaitOne(); //锁了 func(); mutex.ReleaseMutex(); //解锁 } }
/// <summary> /// 单线程处理逻辑,使用锁将线程锁住,执行完毕后,释放 /// </summary> /// <param name="ed"></param> public void Execute(ExecutorDelegate ed) { lock (this) { tex.WaitOne(); ed(); tex.ReleaseMutex(); } }
/// <summary> /// 仅仅是为了静态类可以直接点到ExecuteEx方法 /// </summary> /// <param name="func"></param> public static void Execute(ExecutorDelegate func) { instance.ExecuteEx(func); }
private Promise(ExecutorDelegate Executor, float delay) { _delay = delay; Executor(_Resolve, _Reject); }
public Promise(ExecutorDelegate Executor) { Executor(_Resolve, _Reject); }