Notice
Recent Posts
Recent Comments
Link
๊ด€๋ฆฌ ๋ฉ”๋‰ด

๋ชฉ๋ก์ „์ฒด ๊ธ€ (1096)

KoreanFoodie's Study

[C++ ๊ฒŒ์ž„ ์„œ๋ฒ„] 2-2. ์Šค๋งˆํŠธ ํฌ์ธํ„ฐ

[C++ ๊ฒŒ์ž„ ์„œ๋ฒ„] 2-2. ์Šค๋งˆํŠธ ํฌ์ธํ„ฐ ํ•ต์‹ฌ : 1. ์Šค๋งˆํŠธ ํฌ์ธํ„ฐ์—๋Š” 3์ข…๋ฅ˜๊ฐ€ ์žˆ๋‹ค. unique_ptr, shared_ptr, weak_ptr. ์ด ์ค‘, unique_ptr ๋Š” ์†Œ์œ ๊ถŒ ๊ฐœ๋…์„ ์œ„ํ•œ ๊ฐ„๋‹จํ•˜๊ณ  ๊ฐ€๋ฒผ์šด ์Šค๋งˆํŠธ ํฌ์ธํ„ฐ์ด๋‹ค. 2. shared_ptr ๋ฅผ ์ƒ์„ฑํ•˜๋ฉด ์‚ฌ์šฉํ•˜๊ณ ์ž ํ•˜๋Š” ํƒ€์ž…์— ๋Œ€ํ•œ ๋ฉ”๋ชจ๋ฆฌ์™€ ์ฐธ์กฐ ์นด์šดํŠธ ๋“ฑ์„ ๊ด€๋ฆฌํ•˜๋Š” ์ œ์–ด ๋ธ”๋ก(Control Block)์— ๋Œ€ํ•œ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋‘˜ ๋‹ค ํ• ๋‹น๋œ๋‹ค. shared_ptr ์˜ ๊ฒฝ์šฐ ์ˆœํ™˜ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, ์ฃผ์˜ํ•ด์•ผ ํ•œ๋‹ค! 3. shared_ptr ์— ๋Œ€ํ•œ ์ฐธ์กฐ ํšŸ์ˆ˜๊ฐ€ ์‚ฌ๋ผ์ง€๋ฉด ์šฐ๋ฆฌ๊ฐ€ ์‚ฌ์šฉํ•˜๊ณ ์ž ํ•˜๋Š” ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ๋ฉ”๋ชจ๋ฆฌ๋Š” ํ•ด์ œ๋˜๋‚˜, ๋งŒ์•ฝ ํ•ด๋‹น ํฌ์ธํ„ฐ๋ฅผ ์ฐธ์กฐํ•˜๋Š” weak_ptr ๊ฐ€ ์žˆ์„ ๊ฒฝ์šฐ, ์ œ์–ด ๋ธ”๋ก์€ ํ•ด๋‹น ํฌ์ธํ„ฐ๋ฅผ ์ฐธ์กฐํ•˜๋Š” weak_..

Game Dev/Game Server 2023. 8. 23. 20:37
[C++ ๊ฒŒ์ž„ ์„œ๋ฒ„] 2-1. Reference Counting

[C++ ๊ฒŒ์ž„ ์„œ๋ฒ„] 1-25. Reference Counting ํ•ต์‹ฌ : 1. ๋ฉ€ํ‹ฐ ์“ฐ๋ ˆ๋“œ ํ™˜๊ฒฝ์—์„œ, ์ƒ ํฌ์ธํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ์–ธ์ œ๋‚˜ ์œ„ํ—˜ํ•˜๋‹ค. ์˜๋„์น˜ ์•Š๊ฒŒ delete ๋œ ํฌ์ธํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ํ•  ์ˆ˜๋„ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. 2. ์ผ๋ฐ˜์ ์œผ๋กœ๋Š” Smart Pointer ๋ฅผ ํ†ตํ•ด ์ด๋Ÿฐ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š”๋ฐ, ํ•ต์‹ฌ์ ์ธ ๋ถ€๋ถ„์€ ๊ฒฐ๊ตญ Reference Count ๋ฅผ ์ฒดํฌํ•˜์—ฌ nullptr ์— ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ์„ ๋ง‰๋Š” ๊ฒƒ์ด๋‹ค! ๋ฌผ๋ก  SharedPtr ๊นŒ์ง€ ์ œ๋Œ€๋กœ ์จ ์ฃผ์–ด์•ผ ๋ฌธ์ œ๋ฅผ ๋ง‰์„ ์ˆ˜ ์žˆ๋‹ค. ๋ฉ€ํ‹ฐ์“ฐ๋ ˆ๋“œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•  ๋•Œ, ์ƒ ํฌ์ธํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฉด ์˜๋„์น˜ ์•Š๊ฒŒ nullptr ์— ์ ‘๊ทผํ•˜๋Š” ๊ฒฝ์šฐ๋ฅผ ๋งž๋”ฑ๋œจ๋ฆฌ๊ฒŒ ๋œ๋‹ค. ์•„๋ž˜์˜ ์˜ˆ์‹œ๋ฅผ ๋ณด์ž. ๋ ˆ์ด์Šค์™€ ํ„ฐ๋ ›์ด ์žˆ๋‹ค๊ณ  ํ•˜๊ณ , ํ„ฐ๋ ›์ด ๋ ˆ์ด์Šค๋ฅผ ํƒ€๊ฒŸํŒ…ํ•˜์—ฌ ๊ฒฉ์ถ” ์‹œํ‚ค๋Š” ๊ฒƒ์„ ์ƒ์ƒํ•ด ๋ณด์ž! ..

Game Dev/Game Server 2023. 8. 21. 19:07
[C++ ๊ฒŒ์ž„ ์„œ๋ฒ„] 1-24. ์—ฐ์Šต๋ฌธ์ œ (์†Œ์ˆ˜์˜ ๊ฐฏ์ˆ˜ ๊ตฌํ•˜๊ธฐ)

[C++ ๊ฒŒ์ž„ ์„œ๋ฒ„] 1-24. ์—ฐ์Šต๋ฌธ์ œ (์†Œ์ˆ˜์˜ ๊ฐฏ์ˆ˜ ๊ตฌํ•˜๊ธฐ) ํ•ต์‹ฌ : 1. ์—ฐ์Šต๋ฌธ์ œ๋ฅผ ํ’€์–ด๋ณด์ž... (์ฃผ์–ด์ง„ ์ˆซ์ž๊นŒ์ง€์˜ ์†Œ์ˆ˜์˜ ๊ฐฏ์ˆ˜ ๊ตฌํ•˜๊ธฐ) 2. ์“ฐ๋ ˆ๋“œ ํ˜น์€, future ๋ฅผ ํ†ตํ•ด ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค. 3. thread::hardware_concurrency() ๋ฅผ ์ด์šฉํ•ด, ์‹ค์ œ ์ฝ”์–ด ๊ฐฏ์ˆ˜๋งŒํผ ์“ฐ๋ ˆ๋“œ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์ด ๋” ํšจ์œจ์ ์ผ ์ˆ˜ ์žˆ๋‹ค(๊ทธ๋ณด๋‹ค ํ›จ์”ฌ ๋งŽ์ด ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค). ์ด์ œ ์—ฐ์Šต๋ฌธ์ œ๋ฅผ ํ’€์–ด๋ณด์ž. ์ฃผ์–ด์ง„ ์ˆซ์ž์— ๋Œ€ํ•ด, 1๋ถ€ํ„ฐ ํ•ด๋‹น ์ˆซ์ž๊นŒ์ง€ ์†Œ์ˆ˜์˜ ๊ฐฏ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค. ์ผ๋‹จ ๋ฉ€ํ‹ฐ ์“ฐ๋ ˆ๋“œ๋ฅผ ์ด์šฉํ•  ๊ฒƒ์ด๋‹ˆ, ๊ฐ ์“ฐ๋ ˆ๋“œ์— ํƒœ์›Œ ๋ณด๋‚ผ ํ•จ์ˆ˜๋ฅผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ •์˜ํ•˜์ž : bool IsPrime(int InInput) { if (InInput

Game Dev/Game Server 2023. 8. 8. 23:38
[C++ ๊ฒŒ์ž„ ์„œ๋ฒ„] 1-23. DeadLock ํƒ์ง€

[C++ ๊ฒŒ์ž„ ์„œ๋ฒ„] 1-23. DeadLock ํƒ์ง€ ํ•ต์‹ฌ : 1. ๋ฐ๋“œ๋ฝ์„ ์žก๋Š”๋‹ค๋Š” ๊ฒƒ์€, ๊ฒฐ๊ตญ ๋ฝ์„ ์žก๋Š” ๋ฐฉ์‹์— ์žˆ์–ด ์‚ฌ์ดํด์ด ํ˜•์„ฑ๋˜๋Š”์ง€๋ฅผ ํŒ๋‹จํ•˜๋Š” ๊ฒƒ๊ณผ ๋™์ผํ•˜๋‹ค. 2. DFS ๋ฅผ ์‘์šฉํ•˜์—ฌ, ์‚ฌ์ดํด์ด ์ƒ๊ธฐ๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ๊ฒ€์‚ฌํ•˜๋ฉด DeadLock ์ƒํ™ฉ์„ ๋ฏธ๋ฆฌ ๊ฒ€์ถœํ•  ์ˆ˜ ์žˆ๋‹ค. DeadLock ์˜ ๊ฒฝ์šฐ, ๊ฐœ๋ฐœ ๋‹จ๊ณ„์—์„œ๋Š” ๋‚˜์˜ค์ง€ ์•Š์œผ๋‚˜, ๋ง‰์ƒ ๋ผ์ด๋ธŒ ์„œ๋น„์Šค๋ฅผ ํ•˜๋ฉด ๊ฒ€์ถœ๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค. ๊ตฌ์กฐ์ ์œผ๋กœ๋Š” ๋ฐ๋“œ๋ฝ์ด ๊ฑธ๋ฆด ๋กœ์ง์ด ์žˆ์Œ์—๋„, ์ ‘์†์ž ์ˆ˜๊ฐ€ ๋งŽ์ง€ ์•Š์•„ ๋ฐ๋“œ๋ฝ์ด ๊ฑธ๋ฆฌ์ง€ ์•Š์„ ์ˆ˜ ์žˆ๋‹ค. ์ด๋Ÿฐ ํƒ€์ด๋ฐ ์ ์ธ ์ด์Šˆ์— ์˜์กดํ•˜์ง€ ์•Š๊ณ , DFS ๋ฐฉ์‹์œผ๋กœ ์‚ฌ์ดํด์ด ์žˆ๋Š”์ง€๋ฅผ ๊ฒ€์‚ฌํ•˜์—ฌ, ๋ฐ๋“œ๋ฝ ๋ฌธ์ œ๋ฅผ ๋ฏธ๋ฆฌ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ฐ๋“œ๋ฝ์„ ์žก๋Š”๋‹ค๋Š” ๊ฒƒ์€, ๊ฒฐ๊ตญ ๋ฝ์„ ์žก๋Š” ๋ฐฉ์‹์— ์žˆ์–ด ์‚ฌ์ดํด์ด ํ˜•์„ฑ๋˜๋Š”์ง€๋ฅผ ํŒ๋‹จํ•˜๋Š” ๊ฒƒ๊ณผ ๋™์ผํ•˜๊ธฐ ๋•Œ๋ฌธ์ด..

Game Dev/Game Server 2023. 8. 8. 21:28
[C++ ๊ฒŒ์ž„ ์„œ๋ฒ„] 1-22. Reader-Writer Lock

[C++ ๊ฒŒ์ž„ ์„œ๋ฒ„] 1-22. Reader-Writer Lock ํ•ต์‹ฌ : 1. ์ฝ๋Š” ๊ฒฝ์šฐ๊ฐ€ ์“ฐ๋Š” ๊ฒฝ์šฐ๋ณด๋‹ค ํ›จ์”ฌ ๋งŽ์„ ๊ฒฝ์šฐ, Read Lock ๊ณผ Write Lock ์„ ๋‚˜๋ˆ„์–ด์„œ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ๋‹ค. 2. Write Lock ์˜ ๊ฒฝ์šฐ ์“ฐ๋ ˆ๋“œ์˜ ID ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์†Œ์œ ๊ถŒ์„ ๊ฒฝํ•ฉํ•˜๊ณ , Read Lock ์˜ ๊ฒฝ์šฐ ๊ณต์œ  ์นด์šดํŠธ๋ฅผ ์˜ฌ๋ฆฌ๋Š” ๋ฐฉ์‹์œผ๋กœ ์ž‘๋™ํ•œ๋‹ค. 3. Write Lock ์„ ์žก์€ ์ƒํƒœ์—์„œ Read Lock ์„ ์žก๋Š” ๊ฒƒ์€ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ, Read Lock ์„ ์žก์€ ์ƒํƒœ์—์„œ ๋ฐ”๋กœ Write Lock ์„ ์žก๋Š” ๊ฒƒ์€ ๋ถˆ๊ฐ€๋Šฅํ•˜๋„๋ก ์„ค๊ณ„ํ•œ๋‹ค. ๋งŒ์•ฝ ์–ด๋–ค ์ปจํ…์ธ ์—์„œ, ๋‚ด์šฉ์„ ์ฝ๋Š” ๊ฒฝ์šฐ๋Š” 1์ดˆ์— 100๋ฒˆ ์ผ์–ด๋‚˜๋Š”๋ฐ, ์‹ค์ œ๋กœ ๋‚ด์šฉ์„ ์“ฐ๋Š” ๊ฒฝ์šฐ๋Š” ์ผ์ฃผ์ผ์— ํ•œ ๋ฒˆ ์ผ์–ด๋‚œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ณด์ž. ์ด๋•Œ, ์‚ฌ์‹ค ๋‚ด์šฉ์„ ์ฝ์„ ๋•Œ๋งˆ๋‹ค ์“ฐ๋ ˆ๋“œ๋ณ„..

Game Dev/Game Server 2023. 8. 7. 22:39
[C++ ๊ฒŒ์ž„ ์„œ๋ฒ„] 1-21. ThreadManager

[C++ ๊ฒŒ์ž„ ์„œ๋ฒ„] 1-21. ThreadManager ํ•ต์‹ฌ : 1. Thread ๋ฅผ ์ง์ ‘ ์ƒ์„ฑํ•˜๊ธฐ๋ณด๋‹ค, ThreadManager ๋ฅผ ํ†ตํ•ด ์ƒ์„ฑํ•ด ๋ณด์ž. 2. ThreadManager ๋ฅผ ํ†ตํ•ด ์“ฐ๋ ˆ๋“œ๋ฅผ ๊ด€๋ฆฌํ•˜๋ฉด, ์ดˆ๊ธฐํ™” ๋ฐ ์ข…๋ฃŒ ์‹œ์ ์˜ ์ž‘์—…์„ ์ž๋™ํ™”์‹œํ‚ฌ ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค. 3. CRASH ๊ด€๋ จ ๋งคํฌ๋กœ๋ฅผ ์œ ์šฉํ•˜๊ฒŒ ํ™œ์šฉํ•˜์ž. ์ด์ œ ๋ณธ๊ฒฉ์ ์œผ๋กœ ์„œ๋ฒ„ ๊ตฌ์ถ•์„ ์‹œ์ž‘ํ•˜๊ธฐ ์ „์—, Thread ๊ด€๋ฆฌ๋ฅผ ๋„์™€์ค„ ThreadManager ๋ฅผ ๋งŒ๋“ค์–ด ๋ณด๋„๋ก ํ•˜๊ฒ ๋‹ค. ์›๋ฆฌ๋‚˜ ๊ธฐ๋Šฅ์€ ๊ฐ„๋‹จํ•˜๋‹ค. ํ˜„์žฌ๋กœ์„œ๋Š” Thread Local Storage ์— ๊ฐ ์“ฐ๋ ˆ๋“œ๋ณ„๋กœ ID ๋ฅผ ๋ถ€์—ฌํ•˜๊ณ , ์ƒ์„ฑ์‹œ์— ์ด๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ์ •๋„์˜ ๊ธฐ๋Šฅ๋งŒ ๋งŒ๋“ค ๊ฒƒ์ด๋‹ค. ์ฝ”๋“œ๋ฅผ ๋ณด๋ฉด ์ดํ•ด๊ฐ€ ๋น ๋ฅด๋‹ค. ThreadManager.h #pragma once #include #in..

Game Dev/Game Server 2023. 7. 27. 15:12
[C++ ๊ฒŒ์ž„ ์„œ๋ฒ„] 1-17, 18, 19. Lock-Free Stack

[C++ ๊ฒŒ์ž„ ์„œ๋ฒ„] 1-17, 18, 19. Lock-Free Stack ํ•ต์‹ฌ : 1. Lock-Free Stack ์€ ๋ฝ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ์—ฌ๋Ÿฌ ์“ฐ๋ ˆ๋“œ๊ฐ€ Stack ์— ์–ด๋–ป๊ฒŒ ํ•˜๋ฉด ์ œ๋Œ€๋กœ Push/Pop ์„ ํ•  ์ˆ˜ ์žˆ๋Š”์ง€๋ฅผ ๋ณด์—ฌ์ค€๋‹ค. popCount ๋‚˜ ์ฐธ์กฐ๊ถŒ/์†Œ์œ ๊ถŒ ๊ฐœ๋…์„ ํ™œ์šฉํ•ด ์ด๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค. 2. Lock-Free Stack ์€ ์‹ค์ œ๋กœ ํ™œ์šฉํ•˜๊ธฐ์—๋Š” ๊นŒ๋‹ค๋กœ์šฐ๋ฉฐ, Lock ๊ธฐ๋ฐ˜์˜ ์ž๋ฃŒ๊ตฌ์กฐ๋ณด๋‹ค ๋” ๋น ๋ฅด๊ณ  ํšจ์œจ์ ์ด๋ผ๊ณ  ์žฅ๋‹ดํ•  ์ˆ˜ ์—†๋‹ค. ๊ฒฐ๊ตญ ๊ฒฝํ•ฉ์ด ์ผ์–ด๋‚ฌ์„ ๋•Œ, ์‹ค์งˆ์ ์œผ๋กœ ์‚ญ์ œ๋ฅผ ํ•˜๋Š” ์“ฐ๋ ˆ๋“œ๋Š” 1๊ฐœ์ด์–ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. 3. compare_exchange_weak ์€ compare_exchange_strong ๊ณผ ๋น„๊ตํ–ˆ์„ ๋•Œ, spurious fail ์ด ์ผ์–ด๋‚  ์ˆ˜๋„ ์žˆ๋‹ค๋Š” ์ฐจ์ด๊ฐ€ ์žˆ๋‹ค. ๊ทธ sp..

Game Dev/Game Server 2023. 7. 26. 18:58
[C++ ๊ฒŒ์ž„ ์„œ๋ฒ„] 1-16. Lock-Based Stack/Queue

[C++ ๊ฒŒ์ž„ ์„œ๋ฒ„] 1-16. Lock-Based Stack/Queue ํ•ต์‹ฌ : 1. Lock-Based Queue/Stack ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ํ™œ์šฉํ•˜๋ฉด, ์—ฌ๋Ÿฌ ์“ฐ๋ ˆ๋“œ๊ฐ€ ํ•ด๋‹น ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ํ™œ์šฉํ•  ๋•Œ ๋ถˆํ•„์š”ํ•œ Lock ์„ ์ถ”๊ฐ€๋กœ ์žก์„ ํ•„์š”๊ฐ€ ์—†์ด, ์‹ฑ๊ธ€์“ฐ๋ ˆ๋“œ ํ™˜๊ฒฝ์—์„œ์ฒ˜๋Ÿผ Push/Pop ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. 2. Push/Pop ํ•จ์ˆ˜ ๋‚ด๋ถ€์ ์œผ๋กœ lock_guard ๋ฅผ ์žก์•„์ฃผ๋ฉด ๋œ๋‹ค. 3. WaitPop ์˜ ๊ฒฝ์šฐ, Condition Variable ์„ ์ด์šฉํ•˜์—ฌ ๊ตฌํ˜„ํ•œ๋‹ค. Queue ๋‚˜ Stack ๊ฐ™์€ ์ž๋ฃŒ๊ตฌ์กฐ์— ์—ฌ๋Ÿฌ ์“ฐ๋ ˆ๋“œ๊ฐ€ ๋™์‹œ์— ์ ‘๊ทผํ•ด์•ผ ํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ณด์ž. ์ง€๊ธˆ๊นŒ์ง€ ๋ฐฐ์šด ๊ฒƒ์„ ์‘์šฉํ•˜๋ฉด, ๊ฐ ์“ฐ๋ ˆ๋“œ๊ฐ€ ํŠน์ • ์ž๋ฃŒ๊ตฌ์กฐ์— ์ ‘๊ทผํ•  ๋•Œ๋งˆ๋‹ค ๋ฝ์„ ๊ฑธ๊ณ  ํ’€๊ธฐ๋ฅผ ๋ฐ˜๋ณตํ•ด์•ผ ํ•˜๊ฒ ์ง€๋งŒ... ์ด๋Š” ์‚ฌ์‹ค ๋งค์šฐ ๊ท€์ฐฎ์„ ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ƒฅ ..

Game Dev/Game Server 2023. 7. 25. 11:29
[C++ ๊ฒŒ์ž„ ์„œ๋ฒ„] 1-15. Thread Local Storage

[C++ ๊ฒŒ์ž„ ์„œ๋ฒ„] 1-15. Thread Local Storage ํ•ต์‹ฌ : 1. Thread Local Storage(TLS) ๋Š”, ์“ฐ๋ ˆ๋“œ ๋ณ„๋กœ ํ• ๋‹น๋œ ๋…๋ฆฝ์ ์ธ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ์˜๋ฏธํ•œ๋‹ค. 2. TLS ๋ฅผ ์ด์šฉํ•˜๋ฉด, ๊ฐ ์“ฐ๋ ˆ๋“œ๋ณ„๋กœ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•  ๋•Œ ํž™์ด๋‚˜ ๋ฐ์ดํ„ฐ ์˜์—ญ์—์„œ ๋ณ„๋„์˜ ๋ณ€์ˆ˜ ์„ ์–ธ ์—†์ด ๋ฐ์ดํ„ฐ๋ฅผ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ์–ด ๋ถˆํ•„์š”ํ•œ Race Condition ์„ ํ”ผํ•  ์ˆ˜ ์žˆ๋‹ค. 3. TLS ๋Š” ์ปดํŒŒ์ผ๋Ÿฌ ์˜์กด์ ์œผ๋กœ ์„ ์–ธํ•  ์ˆ˜๋„ ์žˆ์ง€๋งŒ, C++ ์—์„œ๋Š” ์ด์ œ ์–ธ์–ด ํ‘œ์ค€์—์„œ ํ•ด๋‹น ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค. Thread Local Storage ๋ž€, ์“ฐ๋ ˆ๋ณ„๋กœ ๋…๋ฆฝ๋œ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์„ ์˜๋ฏธํ•œ๋‹ค. ์Šคํƒ์€ ์•„๋ž˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด ๋ณ„๋„์˜ stack ์˜์—ญ์ด ์กด์žฌํ•˜๊ณ , Heap ๊ณผ ๋ฐ์ดํ„ฐ ์˜์—ญ์„ ๊ณต์œ ํ•˜๋Š”๋ฐ... TLS ์˜ ๊ฒฝ์šฐ, ๊ฐ ์“ฐ๋ ˆ๋“œ๋ณ„..

Game Dev/Game Server 2023. 7. 24. 17:24