585 Stimmen

Was ist der Unterschied zwischen ManualResetEvent und AutoResetEvent in .NET?

Ich habe die Dokumentation dazu gelesen und glaube, dass ich es verstanden habe. Eine AutoResetEvent wird zurückgesetzt, wenn der Code durchläuft event.WaitOne() sondern ein ManualResetEvent nicht.

Ist dies richtig?

2voto

princio Punkte 101

Wenn Sie AutoResetEvent und ManualResetEvent verstehen wollen, müssen Sie nicht Threading, sondern Interrupts verstehen!

.NET will Low-Level-Programmierung so weit wie möglich wegzaubern.

Eine Unterbrechung ist etwas, das in der Low-Level-Programmierung verwendet wird und einem Signal entspricht, das von niedrig zu hoch wird (oder umgekehrt). Wenn dies geschieht, unterbricht das Programm seine normale Ausführung und verschiebt den Ausführungszeiger zu der Funktion, die dieses Signal verarbeitet. Veranstaltung .

Wenn eine Unterbrechung auftritt, müssen Sie als erstes zurücksetzen seinen Zustand, weil die Hardware auf diese Weise funktioniert:

  1. ein Pin ist mit einem Signal verbunden und die Hardware wartet darauf, dass es sich ändert (das Signal kann nur zwei Zustände haben).
  2. Wenn sich das Signal ändert, bedeutet das, dass etwas passiert ist und die Hardware eine Speichervariable zum Zustand gekommen (und das bleibt auch so, wenn sich das Signal wieder ändert).
  3. merkt das Programm, dass die Variable ihren Zustand ändert und verschiebt die Ausführung zu einer Bearbeitungsfunktion.
  4. Hier ist das Erste, was zu tun ist, um diese Unterbrechung wieder hören zu können, die zurücksetzen diese Speichervariable in den Zustand "nicht geschehen".

Dies ist der Unterschied zwischen ManualResetEvent und AutoResetEvent.
Wenn ein ManualResetEvent auftritt und ich es nicht zurücksetze, kann ich es beim nächsten Mal nicht mehr hören.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X