假设我们有一个可重入的接口方法A,并且对于方法中的每个条目,当前线程应等到特定于此线程的事件发生时:
void interfaceMethodA()
{
doSomething();
waitHandle.WaitOne();
}
现在,将有set() - 调用waitHandle,以便退出该方法。但是那些set()调用必须释放(可能的)线程队列的特定线程,而不是必须释放第一个线程队列。这种模式的最佳实践是什么,也许wait()和pulse()结合线程id向量?对我来说,这似乎有点混乱......
提前致谢,Juergen
答案 0 :(得分:2)
您可以使用ThreadLocal<WaitHandle>
ThreadLocal<WaitHandle> waitHandle = new ThreadLocal<WaitHandle>(() => new ManualResetEvent(false));
void interfaceMethodA()
{
doSomething();
waitHandle.Value.WaitOne();
}