Laden...

lock in AutoResetEvent

Erstellt von Kuehner vor 17 Jahren Letzter Beitrag vor 17 Jahren 1.866 Views
K
Kuehner Themenstarter:in
489 Beiträge seit 2006
vor 17 Jahren
lock in AutoResetEvent

Hallo,

Mein Programm hängt sich auf und weiss nicht warum.

Eine Frage, dessen Antwort mir schon mal sehr weiter hilft:

Ich benutze eine AutoResetEvent-Klasse, dessen .Set() von 2 verschiedenen Threads gestzt werden kann. Muss ich für das AutoResetEvent-Object selbst auch ein lock machen? Für den Fall, dass die beiden Threads "gleichzeitig" das .Set() auslösen... (im schlimmsten Fall mit einem Multi-Core Prozessor, den ich NOCH nicht habe).

49.485 Beiträge seit 2005
vor 17 Jahren

Hallo Kuehner,

Muss ich für das AutoResetEvent-Object selbst auch ein lock machen?

definitiv nein! Das ist eher kontraproduktiv. AutoResetEvent ist als Synchronisationsinstrument natürlich threadsafe.

herbivore

T
512 Beiträge seit 2006
vor 17 Jahren

Kommt drauf an welchen Effekt zu haben willst.

Wenn du bei 2 gleichzeitigen Sets den gleichen Effekt haben willst, wie wenn 2 mal hintereinander Set aufgerufen wird, dann musst du nix machen.

e.f.q.

Aus Falschem folgt Beliebiges

49.485 Beiträge seit 2005
vor 17 Jahren

Hallo Traumzauberbaum,

da zwei "gleichzeitige" Sets von AutoResetEvent immer sequentialisiert werden, also einer sauber nach dem anderen durchgeführt wird, kann man auch durch lock hier nichts positiv verändern, sondern sich höchstens irgenwelche Deadlock einhandeln.

Es ist so wie ich gesagt habe. Hier braucht man kein lock! Es ist kontraproduktiv.

herbivore

T
512 Beiträge seit 2006
vor 17 Jahren

Man kann durch locking verhindern, dass das 2. Set aufgerufen wird. Das 2 Sets immer sequenziert werden ist klar. Deswegen muss man ja auch nichts machen, wenn man den gleichen Effekt wünscht, wie wenn es 2 mal hintereinander ausgeführt wird. Genau das wird ja gemacht.
Nur wenn man diesen Effekt nicht wünscht, dann muss man was tun. Genau das hab ich doch gesagt.

e.f.q.

Aus Falschem folgt Beliebiges

49.485 Beiträge seit 2005
vor 17 Jahren

Hallo Traumzauberbaum,

hm, ist mir nicht klar, wie man mit lock verhindern können soll, dass ein zweites Set erfolgt. Bis zum "Beweis" des Gegenteils bleibe ich dabei, dass lock hier kontraproduktiv ist.

herbivore