유니티 기초

[주말과제] 광복절 과제

다모아 2023. 8. 15. 23:50

1. 동기와 비동기

 

동기는 직렬적으로 작동하는 방식이다.

직렬적 : 요청을 보낸 후 응답을 해야지만 처리한다

여러가지 동시에 처리할 수 없음

장점 : 설계가 간단하고 직관적

단점 : 응답을 안하면 아무것도 못하고 계속해서 대기함

 

비동기는 병렬적으로 작동하는 방식이다.

병렬적 : 요청을 보낸 후 응답의 여부와 상관없이 처리한다.

여러가지 동시에 처리 가능

장점 : 요청을 보낸 후 남은 시간동안 다른 작업을 수행할 수 있음

단점 : 동기보다 설계가 복잡함


2. 프로세스, 스레드, 코루틴

 

프로세스 : 프로그램을 동적으로 변환하여 돌아가고있는 상태, 컴퓨터에서 작업중인 프로그램을 의미

메모리에 적재되고 CPU를 할당받아서 프로그램이 실행되고있는 상태이다.

코드 덩어리들을 실행한 것

운영체제로부터 자원을 할당받은 작업의 단위

 

 

스레드 : 프로세스가 할당받은 자원을 이용하는 실행 흐름의 단위

프로세스의 한계로 여러개의 프로세스를 만들면 그 만큼 CPU할당 받는 자원이 중복되서 이 프로세스의 한계를 해결하기 위해 나온것이다.

하나의 프로세스 내에서 동시에 진행되는 작업 갈래, 흐름의 단위

 

코루틴 : 협력형 멀티 태스킹, 동시성 프로그래밍 지원, 비동기 처리를 쉽게 도와줌

코루틴은 꼭 return 문이나 마지막 닫는 괄호를 만나지 않아도 언제든지 중간에 나갈 수 있는 장점이 있고, 언제든지 다시 나갔던 그 지점으로 들어올 수 있다.


3. 스레드와 코루틴의 차이점

스레드는 여러 개의 작업을 병렬로 수행해서 비동기적으로 작동하는데

코루틴은 비동기 작업이지만, 실제로는 병렬적으로 수행되지 않고 여러 개의 작업을 쪼개고 나눠서 수행하는 방식이다.

스레드는 쪼개지 않고 두 개의 작업이 있다고하면 두 명의 작업자가 동시에 처리하는 병렬 작업인데

코루틴은 한 명의 작업자가 두 작업을 쪼개서 번갈아가면서 수행함으로써 동시에 처리되는 것처럼 보이게 한다.

하지만 코루틴이 좋은 이유는 이렇게 동시에 처리하는 것처럼 보이게해서 실제로 병렬 처리하는 것은 아니지만 스레드보다 가볍기 때문에 성능 면에서 더 좋다고 한다.