[질문] AIX에서 POSIX semaphore 지원여부

bizzare의 이미지

POSIX semaphore를 이용하여 어플리케이션을 만들었습니다.

그런데, 다른 플랫폼은 다 정상작동하는데,

AIX에서는 sem_init을 호출했을 때, 에러가 리턴되더군요.

구글을 통해 검색해보니, AIX에서는 POSIX semaphore를 지원하지 않는다는 글을 발견했는데, 사실인가요?

1) 사실이 아니라면
어떤 세팅을 해줘야 하나요? 컴파일 및 링크는 모두 잘되고, 단지 실행시간에 에러가 리턴되고 있습니다.

2) 만일 사실이라면
AIX에서는 semaphore를 어떻게 구현해야 하나요?
제가 사용하고 있는 기능은 initialize, destroy, lock, unlock, 이렇게 4가지 입니다.

bizzare의 이미지

정말 깨끗하고 멋진 프로그램을 짜고 싶습니다.

정말 깨끗하고 멋진 프로그램을 짜고 싶습니다.

bizzare의 이미지

Semaphore를 쓰려고 한 용도는 Mutex를 이용하여 구현할 수 있을 것 같아서 그렇게 처리했습니다.
(다행히 AIX에서 Mutex함수들은 있더군요. (pthread함수라서 그런 듯. ^^)

Semaphore용도의 mutex를 정의하고

Semaphore의 Lock함수 래퍼 함수에서
Mutex.lock();
Mutex.lock();
Mutex.unlock();

Semaphore의 UnLock함수 래퍼함수에서
Mutex.unlock();

과 같이 코드를 했습니다.

결국 Semaphore.lock()을 하게 되면
첫번 째, Mutex.lock();호출 후, 2번째 Mutex.lock()에서 대기상태로 들어갈테고
Unlock();을 하게 되면 2번째에서 대기하던 스레드가 계속 진행되게 되죠. (이 때 2번째 mutex도 unlock이 되고요)

뭐 이렇게 하니 제가 의도한 동작이 되네요.

정말 깨끗하고 멋진 프로그램을 짜고 싶습니다.

정말 깨끗하고 멋진 프로그램을 짜고 싶습니다.