더북(TheBook)

동기적으로 시스템을 설계한다면 키오스크에서 주문을 받고 음식을 만드는 10초 동안 키오스크는 주문을 받지 못하고 멈추어 있게 됩니다. 고객들 불만은 폭주할 것이고, 거의 실시간으로 주문을 받을 수 있는 키오스크는 많이 억울하겠죠. 이제 큐가 등장해서 문제를 해결할 시간입니다. 키오스크는 고객에게서 주문을 받고 큐에 전달합니다. 요리 로봇은 큐에서 주문을 꺼내 요리를 시작합니다. 키오스크는 실시간으로 주문을 받기 때문에 열 개 정도는 금방 매진될 것입니다.

요리 로봇은 요리하는 데 10초나 걸리지만 조급해 하지 않아도 됩니다. 주문 요청은 큐에 잘 보관되어 있으니까요. 로봇 세 대는 자신의 요리가 끝날 때마다 큐를 확인해서 요청이 있다면 하나씩 꺼내 가면 됩니다. 스레드가 안전하니 같은 요청을 다른 로봇과 동시에 가져갈 일도 없습니다. 키오스크는 주문을 열 개 모두 처리할 때까지 기다렸다가 화면에 모든 주문이 처리되었다는 메시지를 출력합니다. 하루 장사가 마무리되는 순간이지요. 이제 코드를 봅시다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.