2016-09-22 5 views
1

Ich benutze rocksdb in einer Multithread-Umgebung.rocksdb in Multithread-Umgebung

Alle meine Threads tun get(), put() und merge() Operationen, möglicherweise mit den gleichen Schlüsseln.

Sind Felsen mir mit irgendwelchen eingebauten Synchronisation? Ist es konfigurierbar? Ich habe Dokumentation und Quellcode durchgesehen, konnte es aber nicht mit Sicherheit herausfinden.

Antwort

1

Es gibt keine solche Synchronisation.

Sie können nur garantieren, dass die Operationen get, put und merge atomar sind. Wenn Sie jedoch versuchen, dasselbe Schlüssel/Wert-Paar in einer Umgebung mit mehreren Threads zu lesen und zu schreiben, wird die Reihenfolge der Operationen NICHT bestimmt. Sie müssen die Synchronisation selbst durchführen.

+0

Was ist mit den Callbacks von Merge-Operator? – Mugen

+0

@Mugen 'merge' ist eine Kapselung von Read-Modify-Write-Muster. Es ist garantiert, dass die Zusammenführungsoperation, d. H. Der Zusammenführungsrückruf, atomar ist. Sie müssen jedoch die Synchronisation zwischen mehreren Operationen 'Zusammenführen', 'Ablegen' und 'Abrufen' selbst durchführen. –

Verwandte Themen