일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 지게차와 크레인
- boj 11053
- DirectX12
- render target
- 홀짝트리
- pccp 기출문제 풀이
- orthographic projection
- boj 1074
- boj 20207
- pcce 기출문제 풀이
- boj 15724
- PCCE
- tessellation
- boj 1958
- 브루트포스
- boj 21921
- 색종이와가위
- lock free stack
- lock based stack
- lock based queue
- c++
- 데이터 체커
- 2025 프로그래머스 코딩챌린지 1차예선
- boj 22942
- 프로그래밍공부
- dp
- LCS
- 비밀 코드 해독
- DirectX
- boj 6443
- Today
- Total
목록Game (14)
오구의코딩모험

Lock-Free Stack 학습 정리 (上편) 멀티스레드 환경에서 Stack을 공유할 경우, 일반적으로는 mutex를 사용해 동기화합니다.하지만 잠금(lock)은 성능을 떨어뜨릴 수 있습니다.그래서 오늘은 Lock-Free Stack, 즉 락 없이 작동하는 스택에 대해 공부했습니다!compare_exchange_weak 같은 CAS(Compare-And-Swap) 연산을 사용해서 락 없이도다중 스레드 환경에서 안전하게 Push와 Pop을 수행할 수 있다는 게 핵심입니다. Lock-Free Stack이란? Lock-Free Stack은 이름 그대로 락(mutex 등)을 사용하지 않고도 멀티스레드 환경에서 안전하게 동작하는 자료구조입니다.이 스택은 atomic 포인터와 연산을 기반으로 구현되며, 핵심은..

메모리 모델, TLS, 락 기반 자료구조 학습 정리 이번엔 C++ 멀티스레드 프로그래밍에서 중요한 개념들인 Memory Model, Thread Local Storage, atomic, 그리고 Lock-Based 자료구조(스택/큐)를 공부했습니다. 1. 메모리 모델 (Memory Order) Memory Model (정책) 1) Sequentially Consistent (seq_cst) 2) Acquire-Release (acquire, release) 3) Relaxed (relaxed) (1) seq_cst (가장 엄격 = 컴파일러 최적화 여지 적음 = 직관적) - 가시성 문제 바로 해결! 코드 재배치 바로 해결! (2) acquire-release - 딱 중간! - release 명령 ..

멀티스레드 동기화와 비동기 처리: condition_variable & future 서버 개발에서는 멀티스레드를 다룰 때 반드시 스레드 간 동기화와 비동기 처리에 대한 이해가 필요합니다. 오늘은 'condition_variable'을 이용한 생산자-소비자 패턴 구현, 그리고 'future', 'promise', 'packaged_task'를 사용한 비동기 처리 방식에 대해 공부했습니다. 1. condition_variable핵심 개념- condition_variable은 한 스레드가 특정 조건을 충족했을 때 다른 스레드에게 알림을 보내는 동기화 도구입니다. - 일반적으로 mutex와 함께 사용하며, 생산자-소비자 구조에 적합합니다. 아래는 Producer 스레드가 데이터를 추가하고 Consume..

서버 개발에서 배우는 동기화 기법 서버 개발에서는 성능 최적화와 동기화를 위한 다양한 기법이 사용됩니다.이번 글에서는 volatile, SpinLock, Sleep, Event (Auto Reset Event / Manual Reset Event) 등의 학습한 내용을 정리합니다. int32 a=0;a = 1;a = 2;a = 3;a = 4;1. volatile: 컴파일러 최적화 방지volatile이란?- volatile 키워드는 컴파일러의 최적화를 방지하는 기능을 합니다. - 일반적인 코드에서 불필요한 대입 연산이 제거되지만, volatile을 선언하면 모든 연산이 실행됩니다. 예제 개념- 변수 a가 여러 번 대입되는 경우, 컴파일러는 불필요한 연산을 제거하여 최적화합니다. - 하지만 volat..

멀티스레드와 동기화 기법: 게임 서버와 병렬 프로그래밍 멀티스레드는 게임 서버와 같은 고성능 프로그램에서 필수적인 요소입니다.이번 글에서는 Web Server와 Game Server의 차이, 멀티스레드와 동기화 문제, Atomic과 Mutex, Deadlock의 위험과 해결법을 중심으로 학습한 내용을 정리합니다. 1. Web Server와 Game Server의 차이 Web Server (HTTP Server)- Web Server는 질의/응답 형태로 작동합니다. * ex) 테이크아웃 전문 식당처럼 요청에 대한 응답을 빠르게 처리.Game Server (TCP Server, Binary Server, Stateful Server)- Game Server는 실시간 상호작용(Interaction)을..

게임 개발에서 배우는 그림자 처리와 애니메이션 기법 게임 개발에서 그림자 처리, 지형 렌더링, 픽킹(Picking), 애니메이션(Skinning)은 사실적인 그래픽 구현과 상호작용을 위해 중요한 역할을 합니다.이번 글에서는 Shadow Mapping, Tessellation, Terrain, Picking, Animation(Skinning)과 관련된 개념과 원리를 정리해 보았습니다. 1. Shadow Mapping Shadow Mapping이란?- Shadow Mapping은 빛의 기준으로 앞에 물체가 있을 경우 그림자를 표현하는 기술입니다. - 그림자는 빛의 방향과 물체 간의 관계를 계산하여 생성됩니다. 그림자 품질 개선 - 그림자가 깨지지 않으려면, 그림자를 그리는 화면 크기를..

게임 개발에서 배우는 렌더링 기법과 최적화 개념 게임 개발은 복잡한 그래픽 요소를 효율적으로 처리하는 기술과 최적화 기법을 요구합니다.이번 글에서는 Frustum Culling, Quaternion, Orthographic Projection, 렌더링 기법, Compute Shader, Particle System, Instancing의 개념의 학습한 내용을 중심으로 정리합니다. 1. Frustum Culling Frustum Culling이란? - Frustum Culling은 절두체 영역 내에 있는 물체만 렌더링하는 기술입니다. - 렌더링할 필요가 없는 물체는 CPU에서 예외 처리하여 GPU 연산을 최소화합니다. - 이 과정은 성능 최적화에 큰 도움을 주며, 복잡한 3D 장면에서 필수적..

게임 개발에서 배우는 다양한 개념과 그래픽 처리 게임 개발에는 데이터 관리, 그래픽 처리, 좌표 변환 등 다양한 개념이 포함됩니다. 이번 글에서는 union, 좌표계 변환, 광원(Light)와 빛의 특징, 그리고 Normal Mapping 을 중심으로학습한 내용을 정리합니다. 1. 데이터 관리와 코드 구조 Union - union은 동일한 데이터를 여러 형식으로 접근할 수 있게 합니다. - 메모리를 효율적으로 관리할 수 있지만, 데이터 해석의 일관성에 유의해야 합니다. DirectX SimpleMath 헤더 - DirectX의 SimpleMath 헤더에는 좌표계 변환과 관련된 함수들이 포함되어 있습니다. - 단, 오른손 좌표계 를 기준으로 동작하므로, 부호 설정을 정확히 해야 합니다. ..

게임 개발에서 배우는 행렬과 좌표 변환 게임 개발에서 행렬(Matrix)은 좌표 변환과 3D 공간을 제어하는 데 매우 중요한 역할을 합니다.이번 글에서는 행렬의 기본적인 연산, 변환의 순서, 그리고 로컬 좌표에서 스크린 좌표로 변환하는 과정을 정리합니다.초심자의 관점에서 배우고 기록한 내용을 공유합니다. 1. 행렬의 기본 개념 행렬의 곱- 행렬 A(m × n)과 B(n × p)를 곱하면 결과는 C(m × p)가 됩니다. - 교환 법칙 : 성립하지 않습니다. (A × B ≠ B × A) - 결합 법칙 : 성립합니다. ((A × B) × C = A × (B × C)) 역행렬 - 역행렬 은 행렬을 곱했을 때 단위행렬로 돌아오게 하는 행렬입니다. - 예: A × A⁻¹ = I (단위행렬) ..

Component, 삼각 함수, Vector게임 개발은 다양한 기술과 수학적 개념이 결합된 창의적인 작업입니다.이번 글에서는 Unity와 Unreal의 Component 시스템 비교와 함께 게임 개발에 필요한 스마트 포인터의 활용법 및 게임 수학의 기본 개념을 정리합니다. 인강을 통해 배우고 정리한 내용을 공유한 글이기에 정확하지 않은 정보가 있을 수 있으며,수정이 필요하다면 언제든 댓글 작성해주시면 감사하겠습니다! 1. Component 시스템 이해 Unity의 Component 기반 구조 Unity는 Component를 사용해 객체에 필요한 기능만 추가할 수 있는 모듈화된 설계를 제공합니다. - GameObject는 기본적인 틀이며, 다양한 Component(예: Transform, Rig..