2010-06-23 4 views

답변

3

예. 그러나 완벽한 IPC 솔루션을 자체적으로 포함하지는 않으며 아마도 모든 IPC 구현과 완벽하게 호환되지 않을 수도 있습니다. 부모님과 아이들과 함께라면 서버와 클라이언트를 의미할까요? 일반적으로 일종의 네트워크 연결을 열거 나 통신을위한 파이프를 만들고 파일 설명자를 얻습니다 (이것을 숨기는 고급 라이브러리를 사용하더라도). 이 파일 기술자를 glib에 전달하고 콜백을 얻은 다음 데이터를 읽을 수 있습니다 (또는 연결이 닫힌 상태). CORBADBUS과 같은 인기있는 IPC 방법에는 이미 glib 통합이 있으므로 파일 설명자 등을 신경 쓰지 않아도됩니다. glib 이벤트 루프는 here으로 설명됩니다. poll()을 직접적으로 사용하는 것과 비교하면 완전히 복잡해 보일 수도 있지만 다른 한편으로는 매우 이식성이 좋습니다.

기본 사용법은 g_source_new()를 사용하여 소스를 만들고 g_source_attach()를 사용하여 기본 컨텍스트에 추가 한 다음 g_source_add_poll()을 사용하여 소스에 파일 설명자를 추가하는 것입니다.

glib에 아직 결정을하지 않았다면 libevent을 glib와 똑같은 점을 확인하고 싶지만 (IMHO) 사용하기가 훨씬 쉽습니다. 또한 1000 이상의 동시 사용자를 처리하는 것이 훨씬 더 좋습니다 (Linux에서는 적어도 다른 운영 체제는이를 지원하지 않을 수도 있음). 그러나 다른 한편으로는 이식성이 좋지 않으며 호환 가능한 POSIX 시스템에서만 작동합니다.

+0

아니요, 서버 및 클라이언트가 아닙니다. 부모님 (석사 과정)과 약 10 명의 자녀가 있습니다. 아이들이 부모 명령 (예 : die(), reload_config(), do_this(), do_that()) 및 하위 명령 (예 : i_have_finished())을 수신 대기하도록합니다. 나는 1000 명의 동시 클라이언트가 필요하지 않으며 단지 약 10 명입니다. 명령은 거의 없습니다. –

+0

만약 자식들이 마스터에 의해 시작된 로컬 프로세스라면, glib만으로 해결할 수있는 간단한 작업입니다 (자식이 원격 일 경우 스스로 설정해야하지만 그다지 다르지는 않습니다). g_spawn_async_with_pipes()를 사용하여 자식 프로세스를 시작하고 (위에서 설명한대로 사용되는) 파일 설명자를 가져올 수 있습니다. 콜백을 얻는 데 사용할 수있는 PID를 얻은 다음 자식이 g_child_watch_add()로 종료됩니다. – Grim

관련 문제