1. 동기적 실행 기존에 함수를 실행해 결과를 받아오는 방법은 보통 '동기적'으로 결과를 가져온다고 표현하는데 아래의 간단한 예제를 보자. 위 코드의 결과는 간단한데 그저 sum에 Calculate의 결과가 입력되어 그 값을 출력하는 것이전부인 코드다.
멀티쓰레드 환경에서 동기화를 위해 사용하는 방법중 하나로 '특정 조건이나 이벤트가 발생할 때까지 대기하게 한다는 점'에서Event와 동작 방식이 비슷하다고 할 수 있다.
동기화 메커니즘 중 하나도 Event를 사용할 수 있는데 [C# 서버] Event에서 Event를 이용한 동기화 방법에 대해서 다뤄본적이 있다.
C++에서 SpinLock을 구현하기 위해서 어떻게 해야할까? 우선, SpinLock대신 mutex를 사용하는 아래 코드를 보자.
멀티쓰레드 환경에서 가장 중요한 개념중 하나는 역시 Lock이다. 각 쓰레드에서 공유자원에 접근하기전에 해당 자원에 대한 Lock을 얻고 자원에 접근함으로 자원에 대한 상호베제를 얻을 수 있다.
C++에서 쓰레드를 사용하기 위해서, C++11부터 지원하는 thread를 사용할 수 있다. C++11이전의 버전에서는 표준에서 쓰레드를 지원하지 않아 다른 외부 라이브러리나 WinAPI를 사용해서 쓰레드를 관리했어야한다.
Tiny 2D RPG 📖 'Tiny 2D RPG'는 1인 게임 개발 프로젝트로 학교 복학후에 인터넷 강의와 게임 서버 관련 서적을 통해 독학한 내용을 바탕으로 2D 횡스크롤 RPG 게임을 제작하는 프로젝트이다.
Tiny 2D RPG 📖 [몬스터 소환]에서 구현한 몬스터에 간단한 AI를 만들차례인데 우선 몬스터의 상태(State)에 대해서 먼저 정의하고 넘어가야할 필요가 있다.
📖플레이어 소환에 이은 몬스터 소환을 구현할 차례인데 우선 몬스터를 구현하기 위한 에셋은 기존에 사용하던 SPUM의 확장팩을 새로 구매했다. 가격은 10달러지만, 기존에 있던 SPUM의 애니메이터를 활용할 수 있고 한번 사두면 이후에 요긴하게 사용할 수 있을 것 같다
📖 이전까지 진행한 내용에서 캐릭터는 빈 Scene에 고정되어 있어야 한다.위의 사진은 게임을 실행하기 전 캐릭터가 빈 Scene에 존재하는 사진이고 아래 사진이 게임을 실행했을 때 Background와 Map이 생성된 모습이다.