2011-07-26 5 views
2

두 프로세스간에 장벽을 만들고 싶습니다. 이를 위해 두 개의 세마포를 사용했습니다. 프로세스 1이 장벽에 도달하면 첫 번째 세마포를 게시하여 프로세스 2에 신호를 보냅니다. 프로세스 2는 신호를 수신하면 두 번째 세마포를 승인으로 게시합니다.두 프로세스 간 장벽

코드는 다음과 같이 보입니다 ...

PROC1 :

sem_post(&sem_sig); 
sem_wait(&sem_ack); 

PROC2 :

이제
sem_wait(&sem_sig); 
sem_post(&sem_ack); 

내 질문이 방법이 가장 효율적이거나하는 경우가있는 두 프로세스간에 프로세스 수준 장벽을 구현하는 더 나은 기술?

답변

2

리눅스는 pthread_barrier_t을 구현합니다. 나에게 그것은 당신의 필요에 완벽하게 맞는 것처럼 보인다. pthread_barrier_init으로 전화 하시려면이 장벽을 프로세스 공유로 지정하십시오.

+0

포크를 실행하고 pthread_barrier_t가 공유 메모리에 있으면 부모 프로세스에서만 pthread_barrier_init를 호출해야합니까 아니면 둘 다 호출해야합니까? – MetallicPriest

+0

@ MetallicPriest : 하나의 프로세스에서만. 그리고'fork()'전에 실행해야한다. 그래서 두번째 프로세스가 초기화되기 전에 액세스를 시도하지 않도록 할 수있다. – caf