일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 멀티코어
- C
- observer pattern
- Design Pattern
- Multithread
- multi-core
- thread
- Atomic
- Unreal
- 옵저버 패턴
- material
- EFFECTIVE C++
- vector
- 한국산업기술대학교
- 옵저버
- random access
- 쓰레드
- 스마트포인터
- stl
- 게임공학과
- MultiCore
- 디자인패턴
- sequential
- 프레임워크
- 유니크포인터
- 복사생성자
- c++
- 메모리관리
- 멀티쓰레드
- 멀티코어 프로그래밍
- Today
- Total
목록옵저버 패턴 (2)
태크놀로지
옵저버 패턴의 단점 옵저버 패턴을 구현시 알림이 있을 때마다 동적할당을 하거나 큐잉하기 때문에 실제로 느릴 수 있습니다. 하지만 인터페이스를 통해 동기적으로 메서드를 간접호출할뿐 메시지용 객체를 할당하지도 않고, 큐잉도 하지 않습니다. 주의해야할점은 동기적이라는 점입니다. 대상이 관찰자 메서드를 직접 호출하기 때문에 모든 관찰자가 알림 메서드를 반환하기 전에는 다음 작업을 진행할 수 없습니다. 관찰자 중 하나라도 느리면 대상이 블록될 수 도있기 때문입니다. 이벤트에 동기적으로 반응한다면 최대한 빨리 작업을 끝내고 제어권을 넘겨주어 프로그램이 멈추지 않도록 해야합니다. ( 멀티쓰레드 사용시 이벤트 큐를 이용해 비동기적으로 상호작용하는것을 추천 ) 동적할당이 많이 일어날까? 게임에선 옵저버 개수가 정적인것이..
옵저버 패턴이란? 객체 사이에 일 대 다의 의존 관계를 정의해두어, 어떤 객체의 상태가 변할때 그 객체에 의존성을 가진 다른 객체들의 그 변화를 통지받고 자동으로 업데이트될 수 있게 만듭니다. 즉 한명의 상태가 변화될때 이로 인해서 변경되어야 할 다른 이벤트들을 수행해야할때 사용됩니다. 업적시스템을 예로들어 구현해보겠습니다. 작동원리 Observer 인터페이스 class Entity; class Observer { public: virtual void OnNotify(int _event, const Entity& data) = 0; public: Observer() = default; virtual ~Observer() = default; }; Observer는 Subject에서 발생하는 이벤트를 기다리..