동기? 비동기? 쓰레드? 멀티 쓰레드?

JCChoo
3 min readAug 30, 2021

--

저번 시간엔 멀티 쓰레드( https://jcchu.medium.com/%EB%A9%80%ED%8B%B0-%EC%93%B0%EB%A0%88%EB%93%9C%EB%9E%80-323bec5b450d )에 대해 알아봤습니다.

이번 시간엔, (너무 오랜만…이네요… 이직 + 이사 등등으로 인해 공부를 등한시하게 되었습니다. 다시 열심히!!!!) 채팅방을 보던 중 비동기와 멀티 쓰레딩에 관련된 내용이 오갔고, 해당 부분에 대해 정확한 대답을 하지 못했습니다.

의미는 안다! 하지만 갑자기 말하려니 개념이 똭!!! 안잡혀 있어 설명하기가 어렵다! 가 제 대답이었습니다… 개념 없네여 참… 열공…!!

그래서 한 번 공부를 해보자 생각했고, 동기부터 간단하고 쉽게 생각해보고 정리해 봅시다.

우선 멀티쓰레드는 비동기이다? 비동기는 멀티쓰레드이다?

아니오! 라고 자신있게 말한다면 굳이 보실 필요 없습니다. 하산하세요.

네. 답은 아니오입니다. 왜냐구요? 이제 알아봐야겠죠?

우선, 비동기와 멀티 쓰레드에 앞서, 동기는 무엇일까요? 쓰레드는 무엇이구요?

저는 동기 = 순서, 쓰레드 = 공간 이라고 생각해봤습니다. (저만 그렇게 생각 안한거 압니다… 후)

그러므로, 아래처럼 4가지의 경우를 볼 수 있습니다!

  1. 싱글 쓰레드 — 동기
  2. 싱글 쓰레드 — 비동기
  3. 멀티 쓰레드 — 동기
  4. 멀티 쓰레드 — 비동기

각각 하나씩 알아봅시다.

우선, 싱글 스레드 — 동기 를 살펴보자면, 하나의 공간에서 순서대로 작업을 한다는 의미입니다. 즉, 아래와 같겠죠?

Thread_1 : |< — — A — →||< — — B — →||< — — C — →|

공간이 하나인 데다가, 순서대로 작업을 하려면, 먼저 시작한 A가 끝나고 B가 시작, 끝나고 C가 시작 및 끝을 맺습니다. 참 쉽죠?

그러면, 두 번째로 싱글 스레드 — 비동기에 대해 알아봅시다. 이는 하나의 공간에서! 순서따윈 필요없다! 는 의미입니다. 즉, 아래와 같겠죠?

Thread_1 : |< — — A |< — — B — |< — — C — | — A — | — C | — B — | B — → | C — → | — A — → |

공간은 하나인데 순서가 필요 없으니, A가 시작하고 끝나지도 않았는데 B가 시작하고, 작업 중에 C도 시작합니다. 이렇게 뭐든 작업들이 중간중간 껴서 순서가 없어지고, 마무리 되는 순서도 다를 겁니다. 하지만 이런 경우는 거의 없겠죠?

세 번째로 멀티 스레드 — 동기 입니다. 여러 공간에서 순서대로 작업한다! 는 의미로, 아래와 같습니다.

Thread_1 : |< — — A — →|

Thread_2 : — — — — — — →|< — — B — →|

Thread_3 : — — — — — — — — — — — — — — →|< — — C — →|

보시다시피, 1번 쓰레드에서 A의 작업이 끝나야 2번 쓰레드에서 B 작업이, B작업이 끝나면 3번 쓰레드에서 C 작업이 시작하고 끝나는 것을 볼 수 있습니다. 공간은 많으나 순서대로 하기에, 굳이 사용 성이 좋진 않을 것 같네요!

마지막으로 멀티 스레드 — 비동기 입니다. 여러 공간에 순서 따윈 신경쓰지 않을거야! 라는 의미로 아래와 같습니다.

Thread_1 : |< — — A — →|

Thread_2 : — — →|< — — B — →|

Thread_3 : — — — — →|< — — C — →|

여러 공간에서 필요에 따라 작업이 이뤄집니다.

이제 감이 좀 오시나요?

쓰레드는 공간을, 동기/비동기는 순서의 여부를 알려주기에 둘은 의미가 다릅니다. 엄청 단순한 개념이면서도 헷갈리기 쉬운 개념이니 알아두면 면접에서 +1점..

이상 싱글/멀티 쓰레드와 동기/비동기 의 차이를 알아봤습니다. 모두 열공!

--

--

JCChoo
JCChoo

Written by JCChoo

“기본부터”라는 말을 좋아하지만 정작 기본이 없는… 기본을 쌓아나가려고 합니다. 안드로이드 개발자로 성장하기 위해 열심히 책상앞에 앉아 두들겨보겠습니다.

Responses (1)