한 작업 안의 여러 갈래
한 가지 일을 여러 갈래로 나눠, 같은 작업실에서 동시에 진행해요.
한 사람이 여러 손으로
요리사 한 명이 주방에서 일해요. 국을 끓이면서, 동시에 야채를 썰고, 가끔 불도 살펴요.
일은 하나(요리)인데, 그 안에서 여러 갈래를 같이 챙기는 거예요. 주방도 하나, 재료함도 하나, 같이 써요.
컴퓨터도 한 작업 안에서 이렇게 여러 갈래로 나눠 일할 수 있어요. 그 갈래 하나하나를 스레드라고 불러요.
일은 하나, 그 안의 갈래는 여럿. 작업실과 재료는 같이 쓴다
스레드는 한 작업 안에서 동시에 진행되는 여러 갈래예요.
남남인 두 집, 한 집의 여러 방
앞에서 프로세스는 저마다 자기 공간을 따로 가진다고 했어요. 두 프로세스는 옆집 사이 같아요. 담이 있어서 서로 함부로 못 들어가요.
그런데 한 프로세스 안의 스레드들은 한 집에 사는 식구 같아요. 방은 나뉘어도 거실과 냉장고는 같이 써요.
그래서 스레드끼리는 정보를 주고받기가 쉬워요. 같은 재료함을 보고 있으니까요. 프로세스끼리는 그게 더 번거로워요.
프로세스는 담 사이 옆집, 스레드는 한 집의 식구
프로세스는 공간을 따로 쓰고, 한 프로세스 안 스레드들은 공간을 같이 써요.
갈래를 늘려 봐요
한 작업을 몇 갈래로 나눌지 직접 바꿔 봐요.
갈래가 하나면 일을 차례로 하나씩 해요. 갈래를 늘리면 여러 부분이 동시에 진행돼요. 다 같은 재료함을 보면서요.
갈래가 많아지면 일이 더 빨리 끝날 수 있어요. 단, 모두가 같은 주방을 쓰니까 너무 많으면 서로 길을 막기도 해요. 직접 늘려보면서 어떻게 나뉘는지 봐요.
갈래 수를 바꿔가며 한 작업이 어떻게 나뉘어 진행되는지 봐요
갈래를 늘리면 동시에 더 많이 진행되지만, 같은 공간을 나눠 쓰는 건 그대로예요.
같이 쓰면 빠르지만
스레드들이 재료함을 같이 쓰는 건 큰 장점이에요. 따로 옮기고 베낄 필요 없이 바로 같은 걸 보니까, 가볍고 빨라요.
그런데 양면이 있어요. 두 갈래가 같은 순간에 같은 재료를 건드리려 하면 부딪힐 수 있어요. 한쪽이 소금을 넣는 사이 다른 쪽도 넣어 버리는 식으로요.
그래서 같이 쓰는 건 편하지만, 언제 누가 건드리는지 약간의 조심이 필요해요. 이 이야기는 다음에 더 해요.
공유는 가볍고 빠르지만, 동시에 같은 걸 건드리면 부딪힌다
공간을 같이 쓰면 빠르고 가볍지만, 같은 걸 동시에 건드리면 문제가 생길 수 있어요.
한 장으로 정리해요
셋만 기억하면 돼요.
첫째, 스레드는 한 작업 안의 여러 갈래예요. 일은 하나인데 그 안에서 여러 부분이 동시에 가요.
둘째, 같은 공간을 나눠 써요. 프로세스끼리는 담이 있지만, 한 프로세스 안 스레드들은 같은 재료함을 봐요. 셋째, 그래서 가볍고 빠르지만 조심도 필요해요. 같은 걸 동시에 건드리면 부딪힐 수 있으니까요.
한 작업 안 여러 갈래, 공간 공유, 가볍지만 조심