동기식 비동기식
• 동기 프로그래밍(Synchronous Programming)이란, 프로그램이 실행되는 도중 어떤 작업을 요청하면, 그 작업이 종료될 때까지 기다렸다가 다음 작업을 하는 것을 의미.
유니티는 일반적으로 동기식 작업 방식을 채택하여 프로젝트를 실행.
동기 방식은 요청과 결과가 동시에 일어나기 때문에, 설계가 매우 간단하고 직관적이지만, 작업이 완료될 때까지 프로그램이 대기해야 함.
• 비동기 프로그래밍(Asynchronous Programming)란, 프로그램이 실행 되는 도중 어떤 행위를 요청한 뒤 그 결과는 기다리지 않고, 다음 동작을 하는 것을 의미.
비동기 프로그래밍은 설계 단계에서 동기보다 복잡하고, 요청한 작업이 완료될 때는 별도로 확인해야 하지만, 요청한 자료가 오래 걸린다고 하더라도 다른 작업을 계속할 수 있기 때문에 자원을 효율적으로 사용할 수 있음.
유니티에서 비동기식 작업
1. 코루틴 사용
- 코루틴은 동기식 방식을 이용하여 비동기식 방식을 모방하는 것.
2. async / await
-유니티에서도 비동기식 작업 방식을 구현 하기위한 async / await 를 지원.
3. Task.Run(() => 함수~());
- ask.run 함수를 이용하면 내부의 함수를 비동기적으로 바로 실행.
Async와 코루틴
유니티에서의 코루틴은 근본적으로 동기처리 방식.
코루틴 루프(While과 같은)에서 무거운 작업을 처리해야한다면
예를 들어 코루틴 루프에 무한 반복문을 넣으면 우리 프로그램이 반복문이 끝나기를 영원히 기다리는 모습을 볼 수 있음.
코루틴에 작업할 때는 해당 프로세스의 복잡도, 최대 시간을 고려하여 로직을 작성해야함.
await 연산자는 피연산자가 나타내는 비동기 작업이 완료될 때까지 수행을 중지.
await연산자를 포함한 메서드에 async를 붙여 컴파일러가 해당 함수가 비동기 함수임을 알 수 있게 함.
async/await는 코루틴처럼 하나의 쓰레드가 비동기적으로 작업을 하는게 아니라 여러 쓰레드를 활용.
소감
제대로 써본적이 없는 기능이라 제가 이해하면서 정리하기가 어렵네요,
그나마 이해되는 내용들은 기억하기 위해 위의 글들로 모아놨지만 좀 더 많이 써보면서
제대로 이해했을 때 다시 한번 정리해서 써보겠습니다.🐈