In meiner Rails-Anwendung habe ich etwas Code wie diesen:
def foo
if object_bar_exists
raise "Kann Bar nicht zweimal erstellen!"
end
Bar.create
end
Der von zwei verschiedenen Anfragen an den Anwendungsserver aufgerufen werden könnte. Wenn dieser Code von zwei Anfragen gleichzeitig ausgeführt wird und sie beide die if
Bedingung zur gleichen Zeit überprüfen, werden weder die bar
des anderen finden und es werden 2 bar
s erstellt.
Was ist der beste Weg, um einen "Mutex" für "die Sammlung von Bars" zu erstellen? Eine spezielle Mutex-Tabelle in der Datenbank?
Aktualisierung
Ich möchte betonen, dass ich hier keinen Speichermutex verwenden kann, da die Parallelität über Anfragen/Prozesse und nicht Threads erfolgt.