게임개발31 메모리 배리어 1. 메모리 배리어 정의 중앙처리장치(CPU)나 컴파일러에게 특정 연산의 순서를 강제하는 기능 2. 메모리 배리어가 없을시의 문제점 중앙처리장치와 컴파일러는 멀티스레드 환경에서 개발자가 의도한 로직 순서를 뒤바꿀 수도 있는데 로직 실행 순서가 바뀌어 실행된다면 잘못된 결과가 발생할 수 있다. 3. 메모리 배리어의 용도 - 코드 재배치 억제 int a = 0; void Thread_A() { a = 10; console.writeLine(a); } void Thread_A() { a = 10; Thread.MemoryBarrier(); console.writeLine(a); } 멀티 스레드 환경에서 메모리 배리어가 없으면 무조건 "a=10" 라는 연산이 처음부터 실행되는 게 아니라 "console.writ.. 2024. 4. 18. 멀티 쓰레드 프로그래밍 프로그램 실행되기 전까지 HDD, SDD 같은 보조기억장치에 저장되어 있는 데이터 덩어리 프로세스 프로그램이 메모리에 적재되어서 실행될 때 프로세스가 만들어짐 * 백그라운드 프로세스 : 사용자와 상호작용하지 않는 프로세스로 데몬(유닉스 체계), 서비스(윈도우)가 있다. 메모리에 상주하면서 특정요청이 오면 즉시 대응할 수 있도록 대기중인 프로세스이다. PCB(Process Control Block) 프로세스가 실행되기 위해서 CPU를 필요로 하는데 CPU 자원은 한정되어 있으므로 모든 프로세스가 CPU를 점유할 수 없다. 프로세스들은 차례대로 한정된 시간만큼 CPU를 점유하고 한정된 시간이 끝나면 CPU 점유권을 다른 프로세스에게 넘긴다. 이러한 방식을 운영체제는 PCB를 이용해서 빠르게 번갈아 수행하는 .. 2024. 4. 17. 몬스터 반경 내의 플레이어 감지 사전 지식1. 벡터의 크기 구하는 방법 직선상에 빈틈이 없도록 실수 집합으로 모든 수를 표시한 것을 수직선이라고 한다.0을 기준으로 음수와 양수라는 두 개의 체계가 서로 대칭되어 있고, 원점에서부터 크기와 방향을 가진 화살표로 표현할 수 있다.수가 지니는 방향은 부호로 나타내며 크기는 원점으로부터의 거리를 의미한다.ex) "-.. 2024. 4. 3. GameObject.AddComponent("스크립트") start 메서드 실행 문제점 해당 게임 오브젝트에 C# 스크립트를 컴포넌트로 추가했다 하더라도 "Start()" 즉시 실행되지 않는다. 1. gameObejct.AddComponent("C#스크립트"); 해당 스크립트의 인스턴스를 생성하고 게임오브젝트에 연결하는 작업만을 수행한다. Awake()는 해당 스크립트의 인스턴스가 만들어진 후에 로드 되는데 .AddComponent 처리시 인스턴스가 생성되므로 해당 스크립트의 Awake() 실행 2. AddComponent 작업이 끝나면 해당 스크립트가 인스턴스화 되서 힙 메모리에 생성됨 3. 모든 스크립트의 인스턴스화가 완료된 후, 다음 프레임에 Start() 메서드를 호출 이때는 모든 스크립트의 Awake() 메서드가 호출된 상태임 Start() 메서드의 실행은 유니티의 내부적인 프로세.. 2024. 3. 26. 이전 1 2 3 4 5 6 ··· 8 다음