2011-03-11 4 views
7

저는 루비에서 멀티 스레드 프로그래밍에 관한 블로그를 읽었습니다. 제가 발견 한 것은 저자가 thread-safety라는 단어를 사용하는 경향이 있다는 것입니다. 무슨 뜻이에요? 스레드 안전 코드를 작성하는 것이 중요한 이유는 무엇입니까?스레드 안전성이란 무엇을 의미합니까?

+3

+1 당신이 읽고있는 것에 대해 생각해보기 위해, 모두는 그렇지 않습니다 :-) – Chris

답변

7

리소스가있는 경우 (예를 들어 글로벌 목록 목록),이 목록을 수정할 수있는 두 개의 스레드가 실행 중입니다. 목록의 데이터가 일치하지 않는 경우가 많이 있습니다.

  • (A 이제 몇 가지 정보를 추가하고 싶은 댓글
  • (데이터가 스레드 A가 사용되는 동안 스레드 B가 같은 책을 삭제) (스레드 A는 그 데이터 표시의 ands 책을 읽습니다) 책)

그래서 당신은 책 목록에 쓰기 액세스 할 수 있습니다 그래서 언제 하나의 단일 스레드에서스레드 안전 코드를 확인해야합니다.

SpyrosP에서 언급 한 교착 상태은 스레드 A가 쓰기를 위해 List를 차단하고 스레드 B가 목록에 데이터를 추가하기를 기다릴 때 발생합니다. 두 스레드는 서로 수행 할 수없는 작업을 기다릴 것이므로 스레드 안전 메커니즘이 제대로 구현되지 않은 경우에만 발생합니다.

+1

매우 잘 설명되어 있습니다. +1 Queue for Python과 같은 가장 준비가 된 패키지는 즉시 쓰레드 안전 메커니즘을 기반으로한다고 덧붙입니다. – Spyros

+0

@SpyroP 좋은 지적! 많은 프로그래밍 언어로 많은 준비가 된 스레드 안전 데이터 구조가 있습니다. 나는 루비의 Lists와 Maps 중 일부가 그것에 대해서도 신경을 쓴다고 확신한다. – Chris