2013-08-23 3 views
24

여러 소스는 ActiveScaffold는 스레드로부터 안전하지 않습니다 주장 : 그에서ActiveScaffold 스레드 안전

내가 컨트롤러 수준의 구성 변경 및 스레드로부터 안전하지 않은 권한 부여를 수집 . ActiveScaffold의 구성 요소를 사용하지 않는 경우 응용 프로그램을 스레드로부터 안전하다고 생각하는 것이 안전합니까? ActiveScaffold에 스레드로부터 안전하지 않은 다른 기능이 있습니까?

답변

10

불행히도이 문제에 대한 공식적인 문서는 많지 않지만 여기에서 개발자에게 유용한 두 가지 인용문이 있습니다. 먼저 in 2010, here on this thread 개발자는 다음을 명시했습니다.

컨트롤러에서 marked_records를 사용 중입니다. 표시된 레코드는 세션에 저장되므로 컨트롤러에서만 액세스 할 수 있습니다. 모델 메소드는 에 대한 해킹 이었지만 현재 컨트롤러에서 모델 메소드를 가져 오지만 스레드 안전하지 않은 클래스 클래스를 사용하고있었습니다.

ActiveScaffold는 스레드 안전 ATM이 아니지만 현재 비 스레드 안전 코드를 수정하고 비 스레드 안전 코드를 추가하고 싶지 않습니다. 모델 메서드 이 필요한 경우 스레드 변수를 사용하여 추가합니다.

이렇게하면 스레드 안전성이 없다는 원래의 의도가 나타납니다. 그러나 그것은 개발되고있었습니다.

이 문제에 대한 논의가 조용해진 것처럼 보이고 더 이상 공식적인 진술을 찾을 수 없습니다. 그러나 재전송 버전에 관해 의견을 말한 사람들은 유일한 스레딩 문제는 active_scaffold_config에 대한 변경 사항을 안전을 위해 일종의 잠금 장치에 배치해야하고 나머지 시스템은 이제 스레드 안전해야한다는 것입니다.

주의해야 할 점은, 공식적인 문서를 찾을 수 없다는 것입니다. 코드베이스를 읽은 사용자의 의견에 기반하고 있기 때문에 언제나 그렇다고 보증 할 수는 없지만, dev 더 많은 비 스레드 코드가 추가 될 것이라고 말하면 이것은 안전한 내기 일 가능성이 높습니다.

마지막으로, this thread을 참고하면 코드 기반이 이제 거의 스레드로부터 안전하며 몇 가지 예방 조치를 취하고 몇 가지 해결 방법을 사용하는 한 스레드를 사용할 수 있음을 의미합니다.

죄송합니다. 여기에 대한보다 자세한 답변은 없지만이 문서는 드물고 코드를 읽는 것이 어느 쪽이든 확실하지 않지만 이것이 내가 얻을 수있는 것과 가장 가까운 것입니다. 프로덕션 환경에서 스레드를 사용하여 성공하는 경우).

+1

답장을 보내 주셔서 감사 드리며 번제를 받으신 것을 축하드립니다. :) –