В моем приложении rails у меня есть код вроде этого:
def foo
if object_bar_exists
raise "can't create bar twice!"
end
Bar.create
end
Который может быть вызван двумя разными запросами, поступающими на сервер приложений. Если этот код выполняется двумя запросами одновременно, и они оба запускают проверку if
одновременно, ни один из них не найдет другого бара
и 2 полос
s будет создан.
Как лучше всего создать «мьютекс» для «коллекции баров»? Таблица мьютексов специального назначения в БД?
update
Я должен подчеркнуть, что я не могу использовать здесь мьютекс памяти, потому что параллелизм осуществляется между запросами / процессами, а не потоками.