2012-08-14 9 views
0

저는 C로 조이스틱 라이브러리를 작성 중이므로 스레드를 안전하게 만들고 싶습니다. pthread 뮤텍스를 사용해도 괜찮습니까? 내 라이브러리를 사용하는 응용 프로그램이 ACE를 스레드 프레임 워크로 사용하는 경우에도 작동합니까 (ACE가 pthread를 확장하지 않을지는 모르지만 그렇지 않다고 가정합시다)?다른 스레드 프레임 워크와 pthread 뮤텍스를 사용하십시오.

Windows와 동일 : mingw + gcc의 pthread와 함께 Windows 'CriticalSection을 사용할 수 있습니까? 또는 OS가 수행해야하는 작업을 스레딩하여 원시 구현이 항상 사용되도록합니다 (Linux의 경우 pthread, Windows의 경우 CriticalSection).

+0

궁극적으로 뮤텍스 기능은 OS 커널에 의해 낮은 수준에서 제공되어야합니다. Mingw + gcc는 pthread의 뮤텍스를 구현하기 위해 Window의 기본 잠금을 사용해야합니다. 나는 이것이 효과가 있다고 생각하는 경향이 있습니다. –

+1

@EzequielMuns 뮤텍스는 OS에서 제공 할 필요가 없습니다. 스핀 잠금 장치는 사용자 수준에서 완전히 발생합니다. – chrisaycock

답변

0

스레드는 사용자 수준에서 작동 할 수 있으며 따라서 OS가 모든 동시성을 예약한다는 보장은 없습니다. 그렇게 말하면 사용자에게 특정 잠금 메커니즘을 요구하지 않고 항상 라이브러리를 스레드로부터 안전하게 만들어야합니다.

예를 들어 모든 기능을 "순수"또는 재 입력으로 만들 수 있습니다. 명시 적으로 이 아닌 버전을 스레드로부터 안전하게 제공 할 수 있으며 pthread와 같은 특정 라이브러리가 필요한 대체 버전을 제공 할 수도 있습니다. 가장 극단적 인 경우에는 잠금없는 동기화를 제공 할 수 있습니다.

관련 문제