Seite 1 von 1

Transaktionen

Verfasst: Freitag 20. Juli 2007, 16:13
von veers
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.

Verfasst: Freitag 20. Juli 2007, 16:57
von BlackJack
Lesestoff: http://de.wikipedia.org/wiki/Sperrverfahren

Und ja, Du wirst wohl so ein RX-Lock selber basteln müssen.

Re: Transaktionen

Verfasst: Freitag 20. Juli 2007, 17:02
von EyDu
veers hat geschrieben:PS: Ja ich weis das Threads böse sind aber es geht nicht anders.
Seit wann sind Threads denn böse? Es gibt kaum noch ernsthafte Anwendungen, die ohne Threads auskommen.

Verfasst: Freitag 20. Juli 2007, 17:03
von Y0Gi
Meinst du mutex?

Verfasst: Freitag 20. Juli 2007, 17:29
von veers
Y0Gi hat geschrieben:Meinst du mutex?
Ein Mutex ist soweit ich weis ein einfaches Lock für eine Sektion. Irre ich mich da?

BlackJack, danke :)

EyDu, Naja eigentlich sind ja die Threads selber nicht böse. Aber man kann sich damit sehr leicht ins Bein schiessen. ;)

Verfasst: Samstag 21. Juli 2007, 00:34
von querdenker
veers hat geschrieben:...Aber man kann sich damit sehr leicht ins Bein schiessen. ;)
Man sollte halt gut zielen, bevor man abdrückt :wink:

syl, querdenker