본문으로 바로가기

[C] IPC 중에 어떤 걸 선택해야 할까

category 프로그래밍/C 2022. 3. 27. 18:01
728x90
반응형

오늘은 입/출력 인터페이스 중 어떤걸 선택하는지에 대해 이야기해보겠습니다.

 

결론적으로는 케이스 바이 케이스라고 볼 수 있습니다.

 

보통 IPC는 소켓, 메시지 큐, 공유 메모리 등을 많이사용합니다.

 

일반적으로는 속도는 소켓보다 메시지 큐, 공유 메모리가 더 빠릅니다.

 

그러나 속도 차이가 그렇게 심하게 나지는 않습니다.

 

예를 들자면 소켓으로 1초에 10만의 데이터를 보낸다면, 메시지 큐로는 1초에 12만의 데이터를 보낼 수 있습니다.

 

이럴 경우, 어떤 IPC를 선택해야할까요?

 

무조건적으로 메시지 큐를 선택을 하지는 않을겁니다.

 

IPC 기술과 더불어 백그라운드에서 데이터를 처리하는 로직부분을 더 신경쓰면 더 많은 데이터를 처리할 수 있을겁니다.

 

데이터를 처리하는 로직에서 1초에 100개의 데이터를 처리한다고 하면, 이 경우는 소켓을 사용하던, 메시지 큐를 사용하던 크게 의미가 없습니다.

 

여기서 생각해보야 할 것은 속도말고 데이터의 응답을 보게 되면, 이 경우는 블록킹 기법보다는 논블록킹 기법이 효과 적입니다.

 

블록킹 기법으로 데이터를 처리하게되면 아무래도 딜레이가 생기기 때문입니다.

 

예전에 대량의 데이터를 처리할 경우, 블록킹 기법을 사용할 경우, 데이터를 처리할 때 데이터 로스가 발생하였습니다.

 

논블록킹을 사용할 경우, 모든 데이터를 정상적으로 처리하였습니다.

728x90
반응형