코어 Core
물리적인 CPU의 프로세서
스레드 Thread
하이퍼스레딩 SMT기술을 이용하여 실제로는 하나의 코어이지만 두개의 코어처럼 보여지는 논리적인 CPU라고 보면 된다.
(컴퓨터 상 스레드) CPU제조사의 기술
(프로그래밍 상 스레드) 소프트웨어 스레드
만약 위와 같은 형태로 각 작업마다의 소요시간이 짧았을 때에는 어떤 분산 처리를 해야겠다는 필요성을 느끼지 못했다. 하지만 소요시간이 긴 작업들이 나타나면서 분산처리의 필요성을 느끼기 시작하여 아래와 같이 각각의 스레드로 분산처리를 하기 시작했다.
작업을 다른 스레드에 시키고 기다린다.
작업을 다른 스레드에 시키고 기다리지 않는다.
대부분 서버와의 통신(네트워크 작업) 때문.
(보통 메인에서) 분산처리시킨 작업을 "다른 한개의 스레드에서" 처리
(보통 메인에서) 분산처리시킨 작업을 "다른 여러개의 스레드에서" 처리
그냥 보면 무조건 동시처리가 좋은 것처럼 보이지만 작업에 순서가 필요한 경우가 있을 때에는 직렬처리가 필요하다.
직렬 순서가 중요한 작업을 처리할 때 사용
동시 각자 독립적이지만 유사한 여러개의 작업을 처리할 때 사용
비동기와 동시처리는 같은 뜻일까? 아니다.
비동기 - 작업을 보내는 스레드와 같은 개념
동시 - 메인스레드에서 다른 스레드로 작업을 보낼 때 보내지는 스레드가 1개인지, 여러개인지.