동기 (Synchronous)
동기는 작업이 순차적으로 실행되는 방식을 의미한다.
즉, 한 작업이 완료될 때까지 다음 작업은 기다려야 한다.
예를 들어, 데이터를 데이터베이스에서 가져오는 작업과 이를 화면에 출력하는 작업이 있다면 동기 방식에서는 데이터베이스에서 데이터를 모두 가져온 후에 화면 출력 작업을 진행한다.
주요 특징은 간단하고 직관적이지만,
일련의 작업 중 하나가 많은 시간을 소요하면 전체 시스템의 퍼포먼스가 저하될 수 있다.
비동기 (Asynchronous)
비동기는 여러 작업이 동시에 실행되는 방식을 의미한다. 한 작업의 완료를 기다리지 않고 바로 다음 작업을 시작한다.
위의 예시에 따르면, 데이터를 데이터베이스에서 가져오는 작업을 시작하고,
그것을 기다리지 않고 바로 화면 출력 작업을 진행한다. 데이터베이스에서의 데이터 가져오기가 완료되면 나중에 그 결과를 처리한다.
주요 특징은 여러 작업을 병렬로 처리할 수 있어 퍼포먼스가 향상될 수 있지만,
작업의 순서나 동기화 문제를 고려해야 한다.
비동기 프로그래밍 (Unity)
유니티 엔진은 주로 싱글 스레드 환경에서 동작하며, 게임의 메인 루프와 UI 업데이트를 처리한다.
따라서 긴 작업을 동기적으로 처리하면 프레임 드랍이나 UI 멈춤 현상을 일으킬 수 있다.
유니티에서는 IEnumerator 인터페이스와 코루틴을 사용하여 비동기 작업을 간편하게 구현할 수 있다.
코루틴을 사용하면, 특정 작업을 여러 프레임에 걸쳐 나누어 처리할 수 있고,
yield return을 사용하여 작업을 일시 중지하고, 유니티 엔진이 다른 작업을 처리할 수 있도록 합니다.
'산대특 > 게임 알고리즘' 카테고리의 다른 글
메멘토 패턴(Memento Pattern) (0) | 2024.02.27 |
---|---|
직렬화(Serialization)와 역직렬화(Deserialization) (0) | 2024.02.05 |
디자인 패턴 (0) | 2024.02.05 |
싱글톤 패턴 (0) | 2024.02.05 |
스레드(Thread)와 코루틴(Coroutine) (0) | 2024.02.03 |