2010-06-21 2 views

답변

4

현실적으로 예상 할 수있는 환경에서 작동하도록 설계된 재사용 가능하고 확장 가능한 구성 요소이기 때문에 구성 요소에 스레드 보호를 설계합니다. 여러 번 처음에는 단일 스레드 환경에서 사용됩니다. 구현의 범위가 더 많은 스레드를 포함하도록 확장되는 경우가 종종 있습니다. 그런 다음 새로운 액세스 시나리오로부터 보호하기 위해 리소스를 추적 할 필요가 없습니다.

+1

그래, 동시성에 관해서 생각하는 것이 항상 좋은 생각이다. – ChaosPandion

+0

예, 이것이 제가 직면 한 문제입니다. 현재 내 프로그램은 단일 스레드이지만, 앞으로 여러 스레드가있을 가능성이 높습니다 ... – Mewzer

1

내부 프로세스 전체 공유 대신 Mutex를 시스템 전체 공유에 사용할 수 있기 때문에 뮤텍스를 이해할 수 있습니다. 예를 들어 뮤텍스를 prevent an application from being started twice에 사용할 수 있습니다.

1

이것은 조금 밖에있을 수 있지만 재귀 함수를 작성하고 각 레벨을 별도의 리소스로 등록한다고 가정 해 보겠습니다. 이렇게하면 한 곳에서 자원 정리의 책임을 지울 수 있습니다. (자원 풀).

+0

진정한 싱글 스레드 응용 프로그램에서, 아마도 이것에 대한 더 나은 옵션이있을 것입니다 ... –

+0

@Reed - 나는 그것을 확신합니다. 그래서 제가 작은 면책 조항을 추가했습니다. – ChaosPandion

1

트릭 질문과 같은 소리입니다. 기술적으로는 그렇습니다. 명명 된 뮤텍스는 각각 하나의 스레드를 포함하는 여러 프로세스를 동기화하는 데 사용될 수 있습니다.

1

system-wide semaphores (심지어는 뮤텍스)을 사용하여 inter-process communication을 사용할 수 있습니다.

예를 들어, 명명 된 세마포어로 acquire()/release()을 실행하면 단일 스레드 프로세스에서 다른 단일 스레드 프로세스로 신호를 보낼 수 있습니다.

1

시스템 인터럽트를 지원하는 환경에서는 비선형 동작이 추가됩니다. 세마포어는 인터럽트 트리거까지 주 스레드에서 휴면 모드로 사용할 수 있습니다.