C # Какой шаблон потока выбрать - PullRequest
0 голосов
/ 28 сентября 2011

Скажем, у нас есть интерфейсный метод A, который допускает реентерабельность, и для каждой записи в методе текущий поток должен ждать, пока событие не произойдет специально для этого потока:

void interfaceMethodA()
{
    doSomething();
    waitHandle.WaitOne();
}

Теперь будет set () - вызовы waitHandle, так что метод будет завершен.Но эти вызовы set () должны освобождать определенный поток (возможной) очереди потока, а не обязательно первый.Какова лучшая практика для этого шаблона, возможно, wait () и pulse () в сочетании с вектором идентификатора потока?Мне это кажется немного беспорядком ...

Заранее спасибо, Юрген

1 Ответ

2 голосов
/ 28 сентября 2011

Вы можете использовать ThreadLocal<WaitHandle>

ThreadLocal<WaitHandle> waitHandle = new ThreadLocal<WaitHandle>(() => new ManualResetEvent(false));

void interfaceMethodA()
{
    doSomething();
    waitHandle.Value.WaitOne();
}
...