이것은 오랫동안 나를 당황하게했습니다.조건 변수는 어떻게 구현됩니까?
compare & 스왑 같은 기본 원자 기본형을 감안할 때 스핀 록 (mutex를 빌드 할 수 있음)을 구현하는 방법을 알 수 있습니다.
그러나 조건 변수를 어떻게 구축 할 수 있는지는 알 수 없습니다. 어떻게 이뤄지나요?
이것은 오랫동안 나를 당황하게했습니다.조건 변수는 어떻게 구현됩니까?
compare & 스왑 같은 기본 원자 기본형을 감안할 때 스핀 록 (mutex를 빌드 할 수 있음)을 구현하는 방법을 알 수 있습니다.
그러나 조건 변수를 어떻게 구축 할 수 있는지는 알 수 없습니다. 어떻게 이뤄지나요?
특히 간단하지 않습니다. 다음은 Douglas Schmidt (ACE 라이브러리를 주로 담당)가 Win32 (Vista 이전)에서 사용할 수있는 동기화 프리미티브를 사용하여 Windows에서 조건 변수를 구현하는 몇 가지 방법에 대한 세부 정보 링크입니다.
결론을 (결론 발언) :
접근 방법은 접근 방법 만 어떤 OS의 기본 요소에 일반적으로 사용 가능한 기본 및 설명 다양한 제한을 사용하여 포함이 기사에서는 Win32 플랫폼에서 조건 변수를 개발하는 것이 왜 까다 롭고 오류가 발생하는지를 설명합니다. 개발자가 해결해야하는 몇 가지 미묘한 디자인 요소가 있습니다. 일반적으로 우리가 조사한 다른 구현은 정확성, 효율성, 공정성 및 이식성에 따라 다릅니다. 이러한 모든 특성을 최적으로 제공하는 솔루션은 없습니다.
공정함이 가장 중요한 경우 섹션 3.4의
: Vista에서 시작SignalObjectsAndWait
솔루션이 좋은 접근 방법입니다. 그러나이 방법은 다른 솔루션만큼 효율적이지 않으며 휴대용이 아닙니다. 따라서 효율성 또는 이식성이 공정성보다 더 중요한 경우 섹션 3.2에 설명 된SetEvent
접근 방식이 더 적합 할 수 있습니다. 당연히, 가장 쉬운 솔루션은 Microsoft가 Win32 API에 조건 변수를 제공하는 것입니다.
참고, 윈도우 네이티브 API를 사용하여 상태 변수를 지원합니다