함정 질문손님이 금고에 서류를 가지러 간 동안 창구가 비어 있어야 한다면, 손님을 더 받으려면 어떻게 해야 할까요?
움직여 보기
0/49 스텝속도동시에 온 손님
응대 중통화 중금고에 감비어 있음
0.0초 · 줄 0명 · 응대 중 0곳 · 완료 0명 — 아직 아무도 오지 않았습니다
문장 따라가기
1/40
컴퓨터는 기다리는 동안 다른 일을 할 수 있을까요?
텍스트 모드에서는 3초마다 다음 문장으로 넘어갑니다.
이렇게 생각해 보세요
창구는 하나뿐입니다. 일이 실제로 처리되는 자리는 그 창구 하나이고, 손님이 금고에 서류를 가지러 간 동안에는 창구가 빕니다.
손님이 한 명이면 그 한 명이 볼일을 차례로 봅니다 — 금고에 다녀올 때마다 창구는 아무 일도 하지 않고 기다립니다. 앞 장에서 본 "기다리는 시간"이 여기서는 빈 창구로 보입니다.
손님을 네 명으로 늘리면 어떻게 될까요? 한 명이 금고에 간 사이 다른 손님이 창구를 씁니다. 창구를 더 만든 것이 아니라, 비어 있던 시간을 쓴 것입니다.
위 화면의 "동시에 온 손님"을 1과 4로 바꿔 보세요. 컴퓨터에서는 이 손님 한 명이 스레드 하나입니다.
숫자로 뒤집기
실측 · 지금 계산됨
손님 한 명이 볼일 12건을 혼자 보면 전부 끝나는 데 96.0칸이 걸립니다(여기서 "칸"은 초가 아니라 시뮬레이터의 시간 눈금입니다 — 두 숫자의 비가 중요합니다). 그동안 창구가 실제로 일한 시간은 25.0%뿐입니다. 나머지는 금고에서 서류가 오기를 기다린 시간입니다.
손님을 4명으로 늘리면 같은 12건이 34.6칸에 끝납니다 — 2.8배입니다. 창구는 그대로 하나인데 일한 시간의 비율만 69.4%로 올라갔습니다. 금고에 동시에 가 있는 사람이 1명에서 4명이 됐기 때문입니다.
공짜는 아닙니다. 창구에 앉은 사람이 바뀐 횟수가 0번에서 21번으로 늘고, 손님마다 자기 자리가 필요하니 동시에 붙들고 있는 메모리도 1개에서 4개로 늘어납니다. 손님을 계속 늘리면 언젠가는 이 비용이 먼저 한계를 만듭니다.