2016-10-14 3 views
-1

현재 멀티 스레딩 및 잠금, 세마포어 및 조건부 변수와 같은 상호 배제 구조의 사용을 배우고 있습니다.멀티 스레딩 및 상호 배제 기본형을 이해하는 방법

3 가지 상호 배타성을 사용할 때 가장 좋은시기는 언제입니까? 이러한 구조를 사용하는 실제 사례가 있습니까?

힌트가 도움이 될 것입니다. 미리 감사드립니다.

+1

귀하의 질문은 너무 광범위합니다. 교과서를 읽거나 각 프리미티브에 대한 위키 피 디아를 읽는 것이 더 나을 때 유용합니다. –

+0

내가 제일 좋아하는'pthreads' 튜토리얼. 'pthreads '를 사용하지 않더라도 개념은 동일합니다 : https://computing.llnl.gov/tutorials/pthreads/ – yano

+0

정보를 제공해 주셔서 감사합니다! – susanc

답변

0

기본적으로 다양한 수준의 정교함과 성능을 제공합니다. 우선,이 모든 잠금 방법에 변형이 있음을 지적하고 어떤 변형을 언급하는지 가정해야합니다.

  1. 잠금 관리자는 가장 정교한 경향이 있습니다. 괜찮은 잠금 관리자는 교착 상태를 감지하고 위반할 수 있습니다. 잠금 관리자는 일반적으로 데이터베이스 액세스를 동기화하는 데 사용됩니다. 잠금 관리자 기능에는 많은 변형이 있습니다.

  2. 세마포어에는 여러 가지 변형이 있습니다. 단일 액세스, 다중 액세스, 단일/다중 액세스 (예 : 1 개의 작성자 또는 여러 개의 독자)를 처리하도록 설정할 수 있습니다. 오버 헤드 수준은 잠금 관리자보다 훨씬 적습니다. 그러나 응용 프로그램은 자체적으로 교착 상태를 처리해야합니다.

  3. 조건 변수는 가장 간단한 잠금 방법 인 경향이 있습니다. 항상 Test와 Set Interlocked 명령어와 같이 잠금을 위해 설계된 하드웨어 명령어에 의존합니다. 이것은 종종 커널 리소스에 사용되는 스핀 잠금에 사용됩니다.