Transaktionen
Verfasst: Freitag 20. Juli 2007, 16:13
Der Titel mag verwirrend sein ich suche jedoch eine Spezielle Art von Lock, den Namen habe ich leider vergessen und die Dokumentation dazu kann ich auch nicht finden.
Das Problem ist folgendes, ich habe einen geteilten Datensatz, auf diesen kann sowohl lesend als auch schreibend Zugegriffen werden.
Es dürfen mehrere Threads gleichzeitig lesen. Jedoch nur ein einziger darf schreiben, und auch das nur, wenn kein anderer am lesen ist.
Ich stell mir das ganze so vor:
aquireRead():
wartet bis want_write false ist
inkrementiert readers
releaseRead():
dekrementiert readers
aquireWrite():
wartet setzt want_write und wartet bis readers 0 ist
gibt es so etwas bereits oder muss ich mir das nun ernsthaft selber schreiben?
PS: Ja ich weis das Threads böse sind aber es geht nicht anders.
Das Problem ist folgendes, ich habe einen geteilten Datensatz, auf diesen kann sowohl lesend als auch schreibend Zugegriffen werden.
Es dürfen mehrere Threads gleichzeitig lesen. Jedoch nur ein einziger darf schreiben, und auch das nur, wenn kein anderer am lesen ist.
Ich stell mir das ganze so vor:
aquireRead():
wartet bis want_write false ist
inkrementiert readers
releaseRead():
dekrementiert readers
aquireWrite():
wartet setzt want_write und wartet bis readers 0 ist
gibt es so etwas bereits oder muss ich mir das nun ernsthaft selber schreiben?
PS: Ja ich weis das Threads böse sind aber es geht nicht anders.