Summary 애니메이터 내의 각 애니메이션에 대한 이벤트를 생성, 관리할 수 있는 컴포넌트 애니메이션의 프레임마다 이벤트를 추가할 수 있습니다. 플레이모드의 변경 사항은 플레이모드가 종료되어도 유지됩니다. 테스트 버전 : 2018.3.14f1, 2019.4.9f1, 2020.3....
파티클 시스템 예제 - 12 - Sword Aura
목차 목표 준비물 1. 작업 환경 구성 2. 하이라키 구성 3. Aura 이펙트 4. Smoke 이펙트 5. Spark 이펙트 6. Glow 이펙트 Preview 목표 검 모델링에 부착하여 사용할 수 있는, 타오르는 듯한 이펙트 만들기 준비물 검 모델링 https://...
C# TLS(Thread Local Storage)
메모리 구조 TLS(Thread Local Storage) Data 영역의 전역 변수, Heap 영역의 객체는 모든 스레드가 공유한다. 그리고 Stack 영역의 지역 변수(또는 멤버 변수)는 해당 블록 내에서만 사용된다. 따라서 기본적으로 각각의 스레드마다 고유하게 갖는 메모리 영역은 없다. 이를 만들어 줄 수 있는 것이 바로 ...
C# Thread Synchronization and Locks
동기화 영역에 따른 구분 1. 유저 모드 동기화 유저 객체(커널에서 제공하지 않는 객체)를 사용한다. 대표적으로 크리티컬 섹션(Critical Section), 인터락(Interlocked)이 있다. 커널 모드 동기화보다 빠르다. 동일 프로세스 내에서만 동기화 가능하다. ...
C# ReaderWriterLock
Reader Writer Lock 스레드 간에 공유되는 데이터가 있을 때, 항상 모든 스레드가 그 데이터를 읽고 쓰는 것은 아니다. 어떤 스레드는 해당 데이터를 읽기만 하고, 어떤 스레드는 해당 데이터를 쓰기만 하는 구조로 이루어져 있을 수 있다. 그리고 소수의 쓰기 스레드가 상대적으로 적은 횟수로 쓰기를 수행하고, 다수의 읽기 스레드가 ...
C# AutoResetEvent
이벤트(Event) 동기화 기법 기존의 락과는 조금 다르게, 락을 얻고자 하는 각각의 스레드만 직접 락을 설정하고 해제할 수 있는 것이 아니라 제 3자도 락을 설정/해제할 수 있는 방식이다. 여기서 제 3자는 커널을 의미하며 커널 영역으로 요청을 보내기 때문에 다른 방식보다 성능 소모가 좀더 크다. 그리고 기존의 락 방식과 동일하게 사용될...
C# Context Switching, Sleep, Yield
컨텍스트 스위칭(Context Switching) 현재 실행 되는 스레드가 있다면, 그 스레드는 CPU의 자원을 할당받아 동작하는 것이다. 동시에 실행될 수 있는 스레드의 개수는 사실 CPU 코어의 개수 이하인데, 예를 들어 CPU 코어가 4개라면 동시에 4개까지의 스레만 자원을 할당받아 동작할 수 있는 것이다. 그런데 CPU 코어가 4개라고...
C# Spin Lock
스핀 락(Spin Lock) 개념 스레드 동기화를 위해 락을 걸고 크리티컬 섹션에 진입할 경우, 대기하는 스레드는 블록된다. 다시 말해, 크리티컬 섹션에 진입하려고 대기하는 스레드는 CPU 점유를 포기하게 된다. 그리고 CPU 자원이 현재 활성화된 다른 스레드에게 넘어가게 되는데, 이 때 컨텍스트 스위칭이 발생하며 그에 따른 오버헤드 또한 발생...
C# Monitor, lock
Critical Section(임계 영역) 여러 프로세스 또는 여러 스레드가 공유 자원에 접근할 때 한 번에 하나만 접근할 수 있도록 보장해주는 영역 C#에서는 대표적으로 Monitor 클래스 또는 lock() 구문을 통해 만들 수 있다. Monitor 클래스 크리티컬 섹션을 만들어줄 수 있다. ...
C# Interlocked
Race Condition class Program { private const int Count = 500000; private static int number = 0; private static void ThreadBody1() { for (int i = 0; i < Count; ...