일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 메모리관리
- Multithread
- sequential
- Design Pattern
- 디자인패턴
- Unreal
- C
- 프레임워크
- material
- 게임공학과
- observer pattern
- 스마트포인터
- 쓰레드
- 멀티코어
- thread
- vector
- random access
- multi-core
- 복사생성자
- 멀티코어 프로그래밍
- MultiCore
- stl
- 유니크포인터
- 옵저버 패턴
- Atomic
- c++
- 한국산업기술대학교
- 멀티쓰레드
- EFFECTIVE C++
- 옵저버
- Today
- Total
목록C (3)
태크놀로지
1. 대입연산자는 *this의 참조자를 반환하게 하자 (convention) int x,y,z; x = y = z = 15; 위와 같이 대입연산은 여러개가 사슬처럼 엮일 수 있다. x = (y = (z = 15)); 또 하나의 특성은, 우측 연관 연산이라는 점이다. class Widget{ public: Widget& operator= (const Widget& rhs){ //... return *this; } } 이렇게 대입 연산이 사슬처럼 엮이려면 대입연산자는 좌변인자에 대한 참조자를 반환하도록 구현되어야 한다. (일종의 convention) +=, -=, *= 등 모든 형태의 대입연산자에서도 Convention이 적용된다. 2. operator=에서 자기대입에 대한 처리가 빠지지 않도록 하자 cla..
옵저버 패턴의 단점 옵저버 패턴을 구현시 알림이 있을 때마다 동적할당을 하거나 큐잉하기 때문에 실제로 느릴 수 있습니다. 하지만 인터페이스를 통해 동기적으로 메서드를 간접호출할뿐 메시지용 객체를 할당하지도 않고, 큐잉도 하지 않습니다. 주의해야할점은 동기적이라는 점입니다. 대상이 관찰자 메서드를 직접 호출하기 때문에 모든 관찰자가 알림 메서드를 반환하기 전에는 다음 작업을 진행할 수 없습니다. 관찰자 중 하나라도 느리면 대상이 블록될 수 도있기 때문입니다. 이벤트에 동기적으로 반응한다면 최대한 빨리 작업을 끝내고 제어권을 넘겨주어 프로그램이 멈추지 않도록 해야합니다. ( 멀티쓰레드 사용시 이벤트 큐를 이용해 비동기적으로 상호작용하는것을 추천 ) 동적할당이 많이 일어날까? 게임에선 옵저버 개수가 정적인것이..
스마트 포인터 연산자 & 메서드 구현하기 이전에 만들었던 유니크 포인트에서 unique_ptr에서 제공하는 메서드와 연산자를 분석해보며 구현해보도록 합시다. get / release / reset / operator-> /operator= STL std::unique_ptr 코드 분석 - get / operator-> _NODISCARD pointer operator->() const noexcept { return _Mypair._Myval2; } _NODISCARD pointer get() const noexcept { return _Mypair._Myval2; } 유니크 포인터 객체의 포인터를 반환해줍니다. - release pointer release() noexcept { return _STD ..