메시지 큐는 다양한 곳에서 활용된다. 운영체제에서는 프로세스의 스케줄링, 라우터에서는 패킷을 처리하기 전 저장하는 버퍼의 목적으로도 쓰인다. 클라우드 애플리케이션을 구성하는 마이크로서비스 간의 정보 교환에도 메시지 큐가 쓰인다. 또한 비동기 처리에도 메시지 큐가 널리 쓰이는데, 이번 장 마지막 부분에서 몇 가지 사례를 살펴볼 것이다. 그 전에 먼저 UDS를 소개하겠다.
유닉스 도메인 소켓(UDS)
소켓(sockets)이라고 하면 여러 가지 의미가 있지만, 여기서 말하는 소켓은 시스템 내에서 스레드 간 정보 교환에 쓰이는 유닉스 도메인 소켓이다. 네트워크 소켓 등의 다른 의미는 10장에서 다룰 것이다.
소켓을 이용한 양방향 선입선출 통신으로 메시지 전달 IPC를 구현할 수 있다. 어떤 스레드가 소켓에 정보를 기록하면, 다른 스레드가 소켓에서 정보를 읽는 식이다. 소켓은 이러한 연결의 엔드포인트를 나타내는 객체다. 두 엔드포인트에 해당하는 스레드가 각자 소켓을 가지고 이들 소켓끼리 연결되는 구도다. 따라서 스레드 간에 정보를 주고받으려면 한쪽 소켓의 출력 스트림에 정보를 기록하고 다른 소켓의 입력 스트림에서 정보를 읽으면 된다.