문제

예를 들어 C ++ 0X 인터페이스

나는 어떤 것들 (CV, Mutex 및 Lock)을 사용하는시기를 알아내는 데 어려움을 겪고 있습니다. 누구든지 자원을 설명하거나 지적 할 수 있습니까?

미리 감사드립니다.

도움이 되었습니까?

해결책

"MUTEX"를 참조하는 페이지에서 실제 저수준 동기화 프리미티브입니다. 뮤 테스를 가져간 다음 해제 할 수 있으며, 한 스레드만이 한 번에 가져갈 수 있습니다 (따라서 원시적 인 원시적입니다). 재귀 뮤트는 같은 스레드를 여러 번, 다른 스레드로 여러 번 릴리스해야합니다.

여기서 "잠금"은 C ++ 래퍼 클래스로 생성자에서 뮤텍스를 취하고 파괴자에서 방출합니다. C ++ 스코프의 동기화를 설정하는 데 유용합니다.

조건 변수는 잠금을 "신호 전달"메커니즘과 결합하는보다 고급 / 고급 형태의 동기화 프리미티브입니다. 스레드가 리소스를 사용할 수있을 때까지 기다려야 할 때 사용됩니다. 스레드는 이력서에서 "대기"할 수 있으며 리소스 생산자는 변수를 "신호"할 수 있으며,이 경우 CV를 기다리는 스레드는 알림을 받고 계속 실행할 수 있습니다. 뮤 테스는 CV와 결합되어 다른 스레드가 신호를 보내려는 스레드가 CV에서 대기하기 시작하는 레이스 조건을 피합니다. 그런 다음 신호가 전달되었는지 또는 손실되는지 여부는 제어 할 수 없습니다.

다른 팁

나는 너무 익숙하지 않아서 c ++ 0x이므로 소금 한 덩어리 와이 답을 가져 가십시오.

Re : Mutex vs. 잠금 : 게시 한 문서에서 mutex os mutex를 나타내는 물체 인 반면 lock 촉진하기 위해 뮤텍스를 고정하는 대상입니다. Raii 패턴.

조건 변수는 차단/신호 메커니즘 (신호+대기)을 상호 배제 메커니즘과 연관시키는 편리한 메커니즘이지만 시스템 프로그래머로서 Condvar와 Mutex 간의 연관성을 선택할 수 있도록 OS에서 분리를 유지합니다. (여러 세트의 동시에 액세스 된 물체를 다루는 데 유용함) Rob Krten은 일부가 있습니다. Condvars에 대한 좋은 설명 그의 온라인 장 중 하나에서 QNX에 예약.

일반적인 참고 문헌까지 : 이 책 (아직 아님)는 흥미로워 보입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top