title image


Smiley Re: Ein paar Anmerkungen
.Net benutzt hier die Monitor Klasse, was einem Critical Section ähnlich ist, aber angeblich nichts mit dem Windows Kernel zu tun hat. Klassen wie HashTable können einen Threadsafe Wrapper anlegen,



Dim htab As New Hashtable

Dim shtab As Hashtable = Hashtable.Synchronized(htab) ' Obtain threadsafe wrapper

shtab.Add("akey", "aval")



Dim myval As String = shtab("akey")



Das ist aber nicht immer ausreichend, und deswegen benutzt man oft das SyncRoot objekt direkt mit dem Monitor



SyncLock htab.SyncRoot

htab.Add("bkey", "bval")

End SyncLock



---



SyncLock htab.SyncRoot

If htab.Contains("bkey") Then

Dim myval As String = htab("bkey")

End If

End SyncLock



Bei If und Zuweisung würde ein Lock pro Methode offensichtlich nicht genug schützen. Es bleibt für mich unklar wo ein Bug liegt oder was im Kernel umgeschrieben werden sollte.



geschrieben von

Login

E-Mail:
  

Passwort:
  

Beitrag anfügen

Symbol:
 
 
 
 
 
 
 
 
 
 
 
 
 

Überschrift: