меня такая ситуация в Framework Применение Django REST:Джанго потенциал критической секции
У меня есть Удалить вид:
def delete(self, request, pk, lid=None, *args, **kwargs):
user_info = self.get_object(pk)
if user_info:
location = Location.objects.filter(loc_id=lid).first()
location.users.remove(user_info)
if location.users.count() is 0:
//delete location
return Response(status=status.HTTP_200_OK)
return Response(status=status.HTTP_404_NOT_FOUND)
Я думаю, что в этом коде есть потенциальная критическая секция:
потока - 1: Проверка счета пользователя местоположение -> отсчет 0
поток - 2: Добавить новый пользователь (user2) в местоположении пользователя (по другой точке зрения)
поток - 1: Удалить местоположение, так как пользователь расположения 0 (но это не правильно, потому что поток -2 добавила новый user_info).
Можно ли в Django, чтобы этот раздел (контрольное значение и операция удаления)
location = Location.objects.filter(loc_id=lid).first()
location.users.remove(user_info)
if location.users.count() is 0:
//delete location
атомарно?