Laden...

AutoResetEvent sicher?

Erstellt von ZiMD vor 17 Jahren Letzter Beitrag vor 17 Jahren 1.490 Views
ZiMD Themenstarter:in
564 Beiträge seit 2005
vor 17 Jahren
AutoResetEvent sicher?

Sagen wir mal ich hab 1000 Threads 😉

autoResetEvent.WaitOne();
autoResetEvent.Reset();
//blabla
autoResetEvent.Set();

Kann ich mich in dem Fall noch auf AutoResetEvent verlassen?

B
1.529 Beiträge seit 2006
vor 17 Jahren

Ich verstehe nicht ganz, was die Anzahl der Threads mit der Funktionalität des AutoResetEvents zu tun haben soll?

ZiMD Themenstarter:in
564 Beiträge seit 2005
vor 17 Jahren

Naja das Problem ergibt sich ja aus dem Zeitraum der zwischen WaitOne und Reset liegt, und je größer die Anzahl der Threads ist desto größer ist auch die Chance, dass einer durchschlüpft.

B
1.529 Beiträge seit 2006
vor 17 Jahren

Zitat MSDN-Lib:

Calling Set signals AutoResetEvent to release a waiting thread. AutoResetEvent remains signaled until a single waiting thread is released, and then automatically returns to the non-signaled state. If no threads are waiting, the state remains signaled indefinitely.

Das bedeutet also, dass nur ein einziger Thread das WaitOne abschließt, alle anderen warten weiter.

T
512 Beiträge seit 2006
vor 17 Jahren

Original von ZiMD
Naja das Problem ergibt sich ja aus dem Zeitraum der zwischen WaitOne und Reset liegt, und je größer die Anzahl der Threads ist desto größer ist auch die Chance, dass einer durchschlüpft.

Der Trick beim AutoResetEvent ist, dass es Reset automatisch aufruft 😉

e.f.q.

Aus Falschem folgt Beliebiges

ZiMD Themenstarter:in
564 Beiträge seit 2005
vor 17 Jahren

😁 Da hät ich auch selber drauf kommen können

S
8.746 Beiträge seit 2005
vor 17 Jahren

Mir scheint, du willst hier einen geschützten Bereich implementieren. Da tuts dein Code tatsächlich nicht. Verwende Monitor.Enter/Exit.