2012-05-10 4 views
1

현재 여러 스레드를 사용하여 데이터를 처리하는 C 프로그램이 있습니다. 생성자 스레드가 데이터를 소비자 스레드로 보내기 위해 glib GAsyncQueue를 사용합니다. 이제는 스레드를 독립적 인 프로세스로 옮겨야 할 필요가 있으며 데이터를 서로 밀어 넣는 방법을 잘 모릅니다. 파이프 사용은 푸시 된 금액 데이터가 상당히 크기 때문에 내 작업에 적합하지 않은 것 같습니다. 또 다른 옵션은 공유 메모리를 얻는 것이지만, 공유 데이터의 양에 대한 상한을 계산하는 것이 약간 어렵 기 때문에이 옵션은 매력적이지 못합니다.프로세스 간 공유 데이터 큐

여러 프로세스에서 사용할 수있는 GAsyncQueue와 같은 것을 알고 있습니까? 이미 glib을 사용하고 있기 때문에 필자는 시설을 선호하지만 필자가 필요로하는 것이 있으면 다른 라이브러리를 사용할 수 있습니다.

답변

0

메시지 및 큐 크기가 원하는 것보다 작을 수 있지만 POSIX는 msgsnd(2), msgget(2) 인터페이스를 지정합니다. (리눅스는 당신이 /proc/sys/kernel/msgmax/proc/sys/kernel/msgmnb 조정 파일과 크기를 수정할 수 있습니다;. 기본값은 8K 및 16K입니다)

메시지 버스는 당신이 미리 작성된 바인딩을 제공 RabbitMQ 같은 무언가를 선택하실 수 있습니다 매우 일반적인 필요가 있기 때문에 많은 언어를 지원하며 향후 개발을 쉽게 할 수 있습니다.

+0

RabbitMQ가로드 하에서 어떻게 작동하는지 알고 있습니까? 말하자면 수천 개의 메시지를 초당 수백 메가 바이트 처리 할 수 ​​있습니까? – Elektito

+0

죄송합니다. RabbitMQ를 장난감 수준의 사용 범위 이상으로 밀어 내지 않았습니다 ... – sarnold

관련 문제