Synchronisation im Treiber
-
Ich will in einem Treiber Zugriffe auf eine Liste synchronisieren.
Was ist das Beste?
Spinlock? Das läuft doch auf Busy Waiting hinaus. (Ist das eigendlich Prozessoren-weit? Hatte mal von jemand gehört Spinlock blockiert alle Prozessoren)
Mutex? (In normaler WinAPI braucht man die doch nur für mehrere Prozesse)
Semaphore? (Ist ähnlich wie mutex nur mit mehr Funktionen, also auch nicht nötig. Brauch ja nur einen binären)
CriticalSection (Wäre das, was ich für das Beste halte, da ich das auch im "Normalen" benutze)Hat jemand Klärung?
-
schau hier: http://www.microsoft.com/whdc/Driver/tips/SyncPrimitives.mspx
(.doc datei, pfui, typisch ms) *fg*
am besten sind natürlich 'lock-free' algorithmen, wenn's geht.

-
@Flamefire:
wenn du den lock nur kurz hältst, dann nimm ne "spin-lock"/"queued spin lock".
wenn länger, dann ne "fast mutex".
-
Ok danke. Dann reicht mir der Spinlock