Notice
Recent Posts
Recent Comments
Link
관리 메뉴

λͺ©λ‘μ „체 κΈ€ (1099)

KoreanFoodie's Study

[C++ κ²Œμž„ μ„œλ²„] 1-6. Lock κ΅¬ν˜„ 이둠

[C++ κ²Œμž„ μ„œλ²„] 1-6. Lock κ΅¬ν˜„ 이둠 핡심 : 1. Lock 을 κ΅¬ν˜„ν•˜λŠ” 방식은 크게 μ„Έ κ°€μ§€λ‘œ λ‚˜λ‰œλ‹€. λ¬΄μž‘μ • 기닀리기, μž μ‹œ ν›„ λŒμ•„μ˜€κΈ°, κΉ¨μ›Œμ€„ λ•ŒκΉŒμ§€ 기닀리기 2. SpinLock 을 μ‚¬μš©ν•˜μ—¬ λ¬΄μž‘μ • κΈ°λ‹€λ¦¬κ±°λ‚˜, μ–΄λŠ 정도 Sleep 을 ν•˜κ³  λ‚œ ν›„ Lock 을 λ‹€μ‹œ 작으렀고 μ‹œλ„ν•  μˆ˜λ„ μžˆλ‹€. 3. ν˜Ήμ€ λ‹€λ₯Έ 일을 ν•˜λ‹€κ°€, Lock 을 μž‘μ„ 수 있게 λ˜λŠ” μƒνƒœκ°€ λ˜μ—ˆμ„ λ•Œ λ…Έν‹°λ₯Ό 달라고 μš”μ²­ν•  μˆ˜λ„ μžˆλ‹€. 예λ₯Ό λ“€μ–΄ Condition Variable 이 μžˆλ‹€. 이 κ³Όμ •μ—μ„œ μ»¨ν…μŠ€νŠΈ μŠ€μœ„μΉ­μ΄ 일어날 수 μžˆλ‹€! 본격적으둜 Lock 을 κ΅¬ν˜„ν•˜κΈ° μ „, Lock 을 κ΅¬ν˜„ν•˜λŠ” 일반적인 방식 3 가지에 λŒ€ν•΄ λ¨Όμ € μ†Œκ°œν•˜κ³  가도둝 ν•˜κ² λ‹€. 사싀 λ‚΄μš©μ€ κ°„λ‹¨ν•˜λ‹€. Lock 이 이미 κ±Έλ¦° μƒνƒœλΌκ³  ν• ..

Game Dev/Game Server 2023. 7. 11. 17:26
[C++ κ²Œμž„ μ„œλ²„] 1-3. atomic (μ›μžμ ) λ³€μˆ˜μ™€ μ—°μ‚°

[C++ κ²Œμž„ μ„œλ²„] 1-3. atomic 에 λŒ€ν•˜μ—¬ 핡심 : 1. ++, -- 같은 κ°„λ‹¨ν•œ μ—°μ‚°μ‘°μ°¨, 사싀 μ–΄μ…ˆλΈ”λ¦¬μ–΄μ—μ„œλŠ” 'κ°’ 볡사' -> 'λ³΅μ‚¬λœ 값에 μ—°μ‚° μˆ˜ν–‰' -> 'λ³΅μ‚¬λœ 값을 λ‹€μ‹œ λŒ€μž…' 같은 κ³Όμ •μœΌλ‘œ μͺΌκ°œμ§„λ‹€ 2. λ§Œμ•½ νŠΉμ • 연산이 진행 쀑일 경우, λ‹€λ₯Έ 연산이 끼어듀지 μ•Šλ„λ‘ λ§Œλ“€κ³  μ‹Άλ‹€λ©΄, ν•΄λ‹Ή λ³€μˆ˜λ₯Ό atomic 으둜 μ„ μ–Έν•  수 μžˆλ‹€. 3. 일반적으둜 atomic 연산은 일반 연산보닀 λŠλ¦¬λ―€λ‘œ, λ‚¨μš©μ€ μ§€μ–‘ν•˜μ—¬μ•Ό ν•œλ‹€. μ–΄λ–€ 연산이 atomic (μ›μžμ ) 으둜 μ΄λ£¨μ–΄μ§„λ‹€λŠ” 것은, ν•΄λ‹Ή 연산이 μ§„ν–‰λ˜λŠ” 쀑간에 λ‹€λ₯Έ 연산이 λ™μ‹œμ— μ§„ν–‰λ˜μ§€ μ•ŠλŠ”λ‹€λŠ” 것을 μ˜λ―Έν•œλ‹€. 이전에 μ—¬λŸ¬ μ“°λ ˆλ“œλ“€μ΄ 곡유 μžμ›μ— μ ‘κ·Όν•˜λ € ν•  λ•Œ Race Condition 이 λ°œμƒν•  수 μžˆλ‹€κ³  μ΄μ•ΌκΈ°ν•œ 적이 μžˆλŠ”λ°, ..

Game Dev/Game Server 2023. 7. 10. 16:15
[C++ κ²Œμž„ μ„œλ²„] 1-1. λ©€ν‹°μ“°λ ˆλ“œ 개둠

[C++ κ²Œμž„ μ„œλ²„] 1-1. λ©€ν‹°μ“°λ ˆλ“œ 개둠 핡심 : 1. λ©€ν‹°μ“°λ ˆλ“œ ν”„λ‘œκ·Έλž˜λ°μ€ 식당을 μš΄μ˜ν•˜λŠ” 것과 λΉ„μŠ·ν•˜λ‹€. ν…Œμ΄λΈ”μ„ ν”„λ‘œμ„ΈμŠ€, ν…Œμ΄λΈ”μ—μ„œ μΌν•˜λŠ” 직원을 μ“°λ ˆλ“œ, μ˜ν˜Όμ„ 코어라고 μƒκ°ν•˜λ©΄ νŽΈν•˜λ‹€. 2. μ“°λ ˆλ“œλŠ” νž™ μ˜μ—­μ„ κ³΅μœ ν•˜μ§€λ§Œ, 각각의 정보λ₯Ό μŠ€νƒμ— μ €μž₯ν•œλ‹€. λ”°λΌμ„œ νž™ μ˜μ—­μ— μ ‘κ·Όν•  λ•ŒλŠ” Race Condition 이 λ°œμƒν•  수 μžˆλ‹€. λ©€ν‹°μ“°λ ˆλ“œ ν”„λ‘œκ·Έλž˜λ°μ€ 식당을 μš΄μ˜ν•˜λŠ” 것과 λΉ„μŠ·ν•˜λ‹€. ν…Œμ΄λΈ”μ„ ν”„λ‘œκ·Έλž¨, 직원을 μ“°λ ˆλ“œ, μ˜ν˜Όμ„ CPU 코어라고 μƒκ°ν•˜μž. 그럼 영혼이 μ§μ›μ—κ²Œ λ“€μ–΄κ°€μ•Ό ν”„λ‘œκ·Έλž¨μ΄ λŒμ•„κ°ˆ 것이닀. 이제 μš°λ¦¬κ°€ ν•΄μ•Ό ν•  일은, μ˜ν˜Όμ„ μ§μ›μ—κ²Œ μ–΄λ–»κ²Œ λΆ„λ°°ν•΄μ•Ό 쒋을지 ꡬ쑰λ₯Ό μ„€κ³„ν•˜κ³  μ½”λ“œλ₯Ό μ§œλŠ” 것이닀! μ‹€μ œλ‘œ μœ„μ˜ μŠ€μƒ·μ²˜λŸΌ, CPU μ½”μ–΄λ₯Ό 적절히 λ°°λΆ„ν•˜λ©΄μ„œ μƒκΈ°λŠ” 문제λ₯Ό 잘..

Game Dev/Game Server 2023. 7. 7. 17:41
[언리얼] μŠ€ν¬λ‘€λ°•μŠ€μ—μ„œ μ™Όμͺ½ 클릭으둜 λ“œλž˜κ·Έν•˜κΈ°

[언리얼] μŠ€ν¬λ‘€λ°•μŠ€μ—μ„œ μ™Όμͺ½ 클릭으둜 λ“œλž˜κ·Έν•˜κΈ° 핡심 : 1. UScrollBox μ—μ„œλŠ” κΈ°λ³Έμ μœΌλ‘œλŠ” 였λ₯Έμͺ½ 클릭을 톡해 μž‘μ•„λŒκΈ°(마우슀 클릭으둜 λ“œλž˜κ·Έ) κ°€ κ°€λŠ₯ν•˜λ‹€. 2. 쒌클릭으둜 λ“œλž˜κ·Έλ₯Ό ν™œμ„±ν™” ν•˜λ €λ©΄, ν•˜μœ„ μœ„μ ―μ— λ²„νŠΌμ„ λ„£κ³ , λ²„νŠΌμ—μ„œ Click Method / Touch Method 섀정을 각각 Precise Click, Precise Tap 으둜 λ°”κΎΈμ–΄ μ£Όλ©΄ λœλ‹€. 3. μžμ„Έν•œ 것은 μ˜μƒ μ°Έμ‘°. UScrollBox μ—μ„œ 쒌클릭으둜 μŠ€ν¬λ‘€μ„ ν•˜κ³  μ‹ΆμœΌλ©΄, UScrollBox μ•„λž˜μ— λ²„νŠΌμ„ λ§Œλ“€κ³ , λ²„νŠΌμ˜ 속성을 μœ„μ™€ 같이 λ³€κ²½ν•΄ μ£Όλ©΄ λœλ‹€. 참고둜, Horizontal ν•˜κ²Œ μ•„μ΄ν…œμ„ 담을 λ•ŒλŠ” WrapBox λ₯Ό, Vertical ν•˜κ²Œ μ•„μ΄ν…œμ„ 담을 λ•ŒλŠ” VerticalBox λ₯Ό UScrol..

Game Dev/Unreal C++ : Dev Log 2023. 7. 1. 07:41
[언리얼] UnrealVS 둜 λ©”λͺ¨λ¦¬ 이슈 μ˜ˆλ°©ν•˜κΈ° (-stompMalloc)

[언리얼] UnrealVS 둜 λ©”λͺ¨λ¦¬ 이슈 μ˜ˆλ°©ν•˜κΈ° (-stompMalloc) 핡심 : 1. Stomp Allocator 둜 잠재적인 λ©”λͺ¨λ¦¬ 이슈λ₯Ό μž‘μ•„λ‚Ό 수 μžˆλ‹€. 2. 바인딩을 꼬리물기처럼 λ§Œλ“€λ©΄ μ•ˆλœλ‹€(μƒμœ„ > μ€‘μœ„ > ν•˜μœ„ μœ„μ ― 순으둜 μ—΄λ¦¬λŠ” 경우, 같은 νƒ€μž…μ˜ λΈλ¦¬κ²Œμ΄νŠΈκ°€ λ°”μΈλ”©λ˜λ©΄ μ•ˆλ¨) 3. stompmalloc 은 μ‹€μ œ 가상 λ©”λͺ¨λ¦¬ λŒ€μ‹  물리 λ©”λͺ¨λ¦¬ μ£Όμ†Œμ— ν• λ‹Ή/ν•΄μ œ μž‘μ—…μ„ μ§μ ‘μ μœΌλ‘œ ν•˜λ„λ‘ 도와쀀닀. κ²Œμž„μ„ λ‹€ λ§Œλ“€κ³  λ‚˜μ„œ 싀행을 ν–ˆλŠ”λ°, 자꾸 ν¬λž˜μ‹œκ°€ λ‚˜μ„œ κ²Œμž„μ΄ 꺼져버리면 맀우 ν—ˆλ§ν•  것이닀. 특히 λ©”λͺ¨λ¦¬ 이슈의 경우, μ •ν™•νžˆ μ–΄λ””μ„œ λ©”λͺ¨λ¦¬κ°€ μ˜€μ—Όλ˜μ—ˆλŠ”μ§€ 개발 λ‹¨κ³„μ—μ„œλŠ” νŒŒμ•…ν•˜κΈ°κ°€ 맀우 μ–΄λ ΅κ³  ν…ŒμŠ€νŠΈ λΉ„μš©μ΄ 큰 νŽΈμ΄λ‹€. λ©”λͺ¨λ¦¬ 이슈λ₯Ό λ””λ²„κΉ…ν•˜κΈ° μœ„ν•œ 쒋은 방법이 ν•˜λ‚˜ μžˆλŠ”λ°, λ°”λ‘œ U..

Game Dev/Unreal C++ : Dev Log 2023. 6. 15. 14:42