귀하의 ipc
태그는 모든 것을 말한다. 프로세스 간 통신을 조사해야합니다.
- 공유 메모리.
- 세마포어.
- 파이프.
- 신호.
- 메모리 매핑 파일.
- 소켓.
의심 할 여지없이 다른 가능성이 있지만 좋은 시작입니다.
얼마나 효율적인은 사용 사례에 따라 다릅니다. 아이에게 무언가를하도록 알릴 필요가 있다면 신호는 아마도 내가 사용하는 것일 것입니다. 프로세스간에 좀 더 많은 정보를 전송해야하는 경우 요구 사항을 완전히 지정하는 것이 좋습니다. 당신이 고려할 수 있습니다
것은 모두 모든 프로세스 간 물건을 무시하고 단지 스레드를 사용하는 것입니다. 적어도 Linux에서는 스레드가 스케줄러의 일급 시민입니다. 오래된 UNIX는 (사용자 모드 스레드와) 구분할 수 있지만 Linux에서는 그렇지 않습니다.
나는 이렇게하는 것이 더 간단하고 정보는 자동으로 공유된다는 것을 알았습니다. (여전히 뮤텍스 등으로 공유 된 콘텐츠를 보호해야한다는 것을 명심하십시오.)
이미 공유 메모리를 사용하려는 경우 신호를 사용하는 것이 좋습니다. 각 어린이 (그리고 그들이 어디에 있는지 알고 있음)에 대한 기억 영역을 따로 설정했다고 가정하면 신호는 아마도 병렬 작업을 위해 많은 어린이들에게 알리는 가장 빠른 방법 일 것입니다.
자녀가 select
루프에서 기다리는 경우 (예 : 정기 작업을 수행하는 데 30 초 시간 초과) 신호가 발생하면 EINTR
으로 즉시 종료됩니다. 즉각적인 응답을 제공하면서 효율적인 CPU 사용을 제공합니다.
효율적인 방법을 찾고 있습니다.이 경우 소켓 오버 헤드가 효율적이라고 생각하지 않습니다. – Betamoo
@Betamoo, 업데이트를 참조하십시오. 귀하의 _specific_ 필요에 따라 다릅니다. 그리고 소켓은 충분히 빠르다. 구현에 달려있다. 데이터는 로컬 소켓을 위해 전선을 통해 나가야 할 필요가 없습니다. – paxdiablo
편집하십시오. – Betamoo