1. 동기와 비동기
동기는 직렬적으로 작동하는 방식이다.
직렬적 : 요청을 보낸 후 응답을 해야지만 처리한다
여러가지 동시에 처리할 수 없음
장점 : 설계가 간단하고 직관적
단점 : 응답을 안하면 아무것도 못하고 계속해서 대기함
비동기는 병렬적으로 작동하는 방식이다.
병렬적 : 요청을 보낸 후 응답의 여부와 상관없이 처리한다.
여러가지 동시에 처리 가능
장점 : 요청을 보낸 후 남은 시간동안 다른 작업을 수행할 수 있음
단점 : 동기보다 설계가 복잡함
2. 프로세스, 스레드, 코루틴
프로세스 : 프로그램을 동적으로 변환하여 돌아가고있는 상태, 컴퓨터에서 작업중인 프로그램을 의미
메모리에 적재되고 CPU를 할당받아서 프로그램이 실행되고있는 상태이다.
코드 덩어리들을 실행한 것
운영체제로부터 자원을 할당받은 작업의 단위
스레드 : 프로세스가 할당받은 자원을 이용하는 실행 흐름의 단위
프로세스의 한계로 여러개의 프로세스를 만들면 그 만큼 CPU할당 받는 자원이 중복되서 이 프로세스의 한계를 해결하기 위해 나온것이다.
하나의 프로세스 내에서 동시에 진행되는 작업 갈래, 흐름의 단위
코루틴 : 협력형 멀티 태스킹, 동시성 프로그래밍 지원, 비동기 처리를 쉽게 도와줌
코루틴은 꼭 return 문이나 마지막 닫는 괄호를 만나지 않아도 언제든지 중간에 나갈 수 있는 장점이 있고, 언제든지 다시 나갔던 그 지점으로 들어올 수 있다.
3. 스레드와 코루틴의 차이점
스레드는 여러 개의 작업을 병렬로 수행해서 비동기적으로 작동하는데
코루틴은 비동기 작업이지만, 실제로는 병렬적으로 수행되지 않고 여러 개의 작업을 쪼개고 나눠서 수행하는 방식이다.
스레드는 쪼개지 않고 두 개의 작업이 있다고하면 두 명의 작업자가 동시에 처리하는 병렬 작업인데
코루틴은 한 명의 작업자가 두 작업을 쪼개서 번갈아가면서 수행함으로써 동시에 처리되는 것처럼 보이게 한다.
하지만 코루틴이 좋은 이유는 이렇게 동시에 처리하는 것처럼 보이게해서 실제로 병렬 처리하는 것은 아니지만 스레드보다 가볍기 때문에 성능 면에서 더 좋다고 한다.
'유니티 기초' 카테고리의 다른 글
보스 MoveForward, MoveBack, Attack, 사거리 등 - MoveBack 오류 (0) | 2023.08.14 |
---|---|
MonoBehavior 오류 (0) | 2023.08.14 |
디자인패턴 (0) | 2023.08.14 |
[주말과제] 복소수와 사원수 (1) | 2023.08.14 |
[합치기] 이동, 공격, 피격 (0) | 2023.08.11 |