2010-08-18 5 views
1

Я работаю над проектом интеграции API в Ruby, и я собирался создать метод класса, чтобы несколько следить за тем, что Rails делает с методами поиска, но я этого не делал, потому что я я мог бы ввести условие гонки.Условия гонки в методах класса Ruby

Я бы ничего не хранил в переменных-членах, просто создавал объекты с помощью метода класса и вызывал внешние вызовы API, поэтому все было бы локально областью (внутри метода класса). Тем не менее, разве нет возможности иметь условие гонки, поскольку несколько потоков проходят через этот метод класса? Как методы класса поиска Rails избегают этого? Или я не понимаю что-то на более фундаментальном уровне здесь?

ответ

2

Возможно, вы не понимаете, как работают нити, или что вы не описываете какую-либо часть своей проблемы, которая была бы источником состояния гонки.

Простое обращение к методу в двух разных потоках недостаточно, чтобы вызвать состояние гонки. Если не существует общего ресурса, который может находиться в противоречивом состоянии, потому что другой поток находится в середине его использования, условие гонки на самом деле не является проблемой.

Если все ваши переменные привязаны к методу, то единственным источником гонки, которую я могу извлечь из описания проблемы, могут быть вызовы API. Если возможно, что хотя один поток находится в середине доступа к API, другой приходит и перезапускает любое взаимодействие, и это будет проблематично, тогда у вас может быть проблема с расой.

+0

Да, меня беспокоят внешние вызовы API. Таким образом, в принципе, если в какой-либо момент функции нет каких-либо общих ресурсов, тогда мне должно быть все в порядке. Благодаря! – Ruben

 Смежные вопросы

  • Нет связанных вопросов^_^