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).
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
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
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
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
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