2017-09-26 3 views
1

ACE 라이브러리 지원에서 라이브러리 지원을 높이기 위해 코드를 이동하려고합니다. ACE_Semaphore를 교체해야합니다. C++ 11은 세마포어 메소드를 지원하지 않습니다. 나는 named_semaphore를 부스트로 보았다. 내가 본 또 다른 선택은 POCO 라이브러리를 포함해야하는 POCO 세마포어로 이동하는 것이 었습니다. 앞으로 나아갈 수있는 가장 좋은 방법은 무엇인지 제안 해주십시오.ACE에서 라이브러리를 밀어 올리려고 할 때 ACE_SEMAPHORE 대신에 named named_semaphore를 사용할 수 있습니까?

편집 : 이것은 내부 프로세스 스레드 동기화를위한 것입니다.

답변

2

짧은 대답은 yes입니다.

내 프로세스 동기화를 위해, 당신은 단순히 뮤텍스 + 조건 변수를 하나 에뮬레이션 할 수있는 경우 : 비록

C++0x has no semaphores? How to synchronize threads?

참고 일반적으로 뮤텍스 + 조건 변수는 콘크리트 조건으로, 할 것 일반적으로 카운터의 형태를 취하지는 않습니다. (예 : Synchronizing three threads with Condition Variable)

프로세스 간 동기화의 경우 이름이 지정된 세마포를 사용합니다. 예 : How to limit the number of running instances in C++ 구현상의 차이점이 있습니다 .¹.

1 boost에서 named_semaphore는 자체 공유 리소스를 할당하고 ACE에서는 사용자가 기존 공유 공간에서 할당한다고 가정합니다. 부스트에서는 플랫폼이 공유 메모리의 원시 동기화 프리미티브를 지원하는 한 분명히 할 수 있습니다.

+0

내부 프로세스 통신용입니다. 나는 내 질문도 편집 할 것이다. 정보 주셔서 감사합니다. – C0D3R

관련 문제