λͺ©λ‘μ 체 κΈ (1096)
KoreanFoodie's Study
[C++ κ²μ μλ²] 1-1. λ©ν°μ°λ λ κ°λ‘ ν΅μ¬ : 1. Critical Section μ μ§μ ν λλ mutex λ±μ νμ©νμ¬ Lock μ κ±Έλ©΄ Race Condition μ ν΄μν μ μλ€. 2. μΌλ°μ μΌλ‘ μ§μ lock/unlock μ ν΄μ£ΌκΈ° 보λ€, lock_guard λ unique_lock μ μ¬μ©νμ¬ RAII λ°©μμΌλ‘ Lock μ κ±Έμ΄ μ£Όλ κ²μ΄ μ’λ€. 3. unique_lock μ κ²½μ°, defer_lock λ±μ μ΅μ μ μ£Όμ΄ Lock Guard λ₯Ό μ’ λ μ μ°νκ² μ¬μ©ν μ μλ€. λ€λ§ lock_guard μ λΉν΄ λ©λͺ¨λ¦¬λ₯Ό λ λ§μ΄ μ°¨μ§νκ³ λ¬΄κ±°μ κ²μ΄λ€. λ€μκ³Ό κ°μ΄ μ¬λ¬ μ°λ λλ₯Ό μ΄μ©ν΄ 벑ν°μ μμλ₯Ό μ½μ νλ€κ³ ν΄ λ³΄μ : vector vec; void Push() { for (int..
[C++ κ²μ μλ²] 1-3. atomic μ λνμ¬ ν΅μ¬ : 1. ++, -- κ°μ κ°λ¨ν μ°μ°μ‘°μ°¨, μ¬μ€ μ΄μ λΈλ¦¬μ΄μμλ 'κ° λ³΅μ¬' -> '볡μ¬λ κ°μ μ°μ° μν' -> '볡μ¬λ κ°μ λ€μ λμ ' κ°μ κ³Όμ μΌλ‘ μͺΌκ°μ§λ€ 2. λ§μ½ νΉμ μ°μ°μ΄ μ§ν μ€μΌ κ²½μ°, λ€λ₯Έ μ°μ°μ΄ λΌμ΄λ€μ§ μλλ‘ λ§λ€κ³ μΆλ€λ©΄, ν΄λΉ λ³μλ₯Ό atomic μΌλ‘ μ μΈν μ μλ€. 3. μΌλ°μ μΌλ‘ atomic μ°μ°μ μΌλ° μ°μ°λ³΄λ€ λ리λ―λ‘, λ¨μ©μ μ§μνμ¬μΌ νλ€. μ΄λ€ μ°μ°μ΄ atomic (μμμ ) μΌλ‘ μ΄λ£¨μ΄μ§λ€λ κ²μ, ν΄λΉ μ°μ°μ΄ μ§νλλ μ€κ°μ λ€λ₯Έ μ°μ°μ΄ λμμ μ§νλμ§ μλλ€λ κ²μ μλ―Ένλ€. μ΄μ μ μ¬λ¬ μ°λ λλ€μ΄ 곡μ μμμ μ κ·Όνλ € ν λ Race Condition μ΄ λ°μν μ μλ€κ³ μ΄μΌκΈ°ν μ μ΄ μλλ°, ..
μ°λ λ μμ± ν΅μ¬ : 1. μ°λ λλ₯Ό μμ±νλ λ°©λ²μ κ°λ¨νλ€. κ·Έλ₯ std::thread μ μλ§μ ν¨μλ₯Ό λ£μ΄μ£ΌκΈ°λ§ νλ©΄ λλ€. 2. μ°λ λλ₯Ό λ«μμ€ λλ join μΌλ‘ λ«μμ£Όλ©΄ λλ€! λ«κΈ° μ , joinable λ‘ join κ°λ₯νμ§λ₯Ό 체ν¬νλ€. 3. μ°λ λ κ°μ²΄ μμ± μ, ν¨μμ μΈμμ λ§κ² κ°―μλ₯Ό λ£μ΄μ£Όμ΄μΌ μ λμν κ²μ΄λ€. μ°λ λ κ°μ²΄ μμ±μ λ΄λΆλ κ°λ³ κΈΈμ΄ ν νλ¦ΏμΌλ‘ ꡬνλμ΄ μλ€. μ΄μ μ°λ λλ₯Ό μμ±νλ κΈ°μ΄μ μΈ μ€μ΅λΆν° μ§νν΄ λ³΄μ π #include "pch.h" #include #include "CorePch.h" #include #include #include #include using namespace std; void HelloThread() { cout
[C++ κ²μ μλ²] 1-1. λ©ν°μ°λ λ κ°λ‘ ν΅μ¬ : 1. λ©ν°μ°λ λ νλ‘κ·Έλλ°μ μλΉμ μ΄μνλ κ²κ³Ό λΉμ·νλ€. ν μ΄λΈμ νλ‘μΈμ€, ν μ΄λΈμμ μΌνλ μ§μμ μ°λ λ, μνΌμ μ½μ΄λΌκ³ μκ°νλ©΄ νΈνλ€. 2. μ°λ λλ ν μμμ 곡μ νμ§λ§, κ°κ°μ μ 보λ₯Ό μ€νμ μ μ₯νλ€. λ°λΌμ ν μμμ μ κ·Όν λλ Race Condition μ΄ λ°μν μ μλ€. λ©ν°μ°λ λ νλ‘κ·Έλλ°μ μλΉμ μ΄μνλ κ²κ³Ό λΉμ·νλ€. ν μ΄λΈμ νλ‘κ·Έλ¨, μ§μμ μ°λ λ, μνΌμ CPU μ½μ΄λΌκ³ μκ°νμ. κ·ΈλΌ μνΌμ΄ μ§μμκ² λ€μ΄κ°μΌ νλ‘κ·Έλ¨μ΄ λμκ° κ²μ΄λ€. μ΄μ μ°λ¦¬κ° ν΄μΌ ν μΌμ, μνΌμ μ§μμκ² μ΄λ»κ² λΆλ°°ν΄μΌ μ’μμ§ κ΅¬μ‘°λ₯Ό μ€κ³νκ³ μ½λλ₯Ό μ§λ κ²μ΄λ€! μ€μ λ‘ μμ μ€μ·μ²λΌ, CPU μ½μ΄λ₯Ό μ μ ν λ°°λΆνλ©΄μ μκΈ°λ λ¬Έμ λ₯Ό μ..
[μΈλ¦¬μΌ] μ€ν¬λ‘€λ°μ€μμ μΌμͺ½ ν΄λ¦μΌλ‘ λλκ·ΈνκΈ° ν΅μ¬ : 1. UScrollBox μμλ κΈ°λ³Έμ μΌλ‘λ μ€λ₯Έμͺ½ ν΄λ¦μ ν΅ν΄ μ‘μλκΈ°(λ§μ°μ€ ν΄λ¦μΌλ‘ λλκ·Έ) κ° κ°λ₯νλ€. 2. μ’ν΄λ¦μΌλ‘ λλκ·Έλ₯Ό νμ±ν νλ €λ©΄, νμ μμ ―μ λ²νΌμ λ£κ³ , λ²νΌμμ Click Method / Touch Method μ€μ μ κ°κ° Precise Click, Precise Tap μΌλ‘ λ°κΎΈμ΄ μ£Όλ©΄ λλ€. 3. μμΈν κ²μ μμ μ°Έμ‘°. UScrollBox μμ μ’ν΄λ¦μΌλ‘ μ€ν¬λ‘€μ νκ³ μΆμΌλ©΄, UScrollBox μλμ λ²νΌμ λ§λ€κ³ , λ²νΌμ μμ±μ μμ κ°μ΄ λ³κ²½ν΄ μ£Όλ©΄ λλ€. μ°Έκ³ λ‘, Horizontal νκ² μμ΄ν μ λ΄μ λλ WrapBox λ₯Ό, Vertical νκ² μμ΄ν μ λ΄μ λλ VerticalBox λ₯Ό UScrol..
[μΈλ¦¬μΌ] UnrealVS λ‘ λ©λͺ¨λ¦¬ μ΄μ μλ°©νκΈ° (-stompMalloc) ν΅μ¬ : 1. Stomp Allocator λ‘ μ μ¬μ μΈ λ©λͺ¨λ¦¬ μ΄μλ₯Ό μ‘μλΌ μ μλ€. 2. λ°μΈλ©μ 꼬리물기μ²λΌ λ§λ€λ©΄ μλλ€(μμ > μ€μ > νμ μμ ― μμΌλ‘ μ΄λ¦¬λ κ²½μ°, κ°μ νμ μ λΈλ¦¬κ²μ΄νΈκ° λ°μΈλ©λλ©΄ μλ¨) 3. stompmalloc μ μ€μ κ°μ λ©λͺ¨λ¦¬ λμ 물리 λ©λͺ¨λ¦¬ μ£Όμμ ν λΉ/ν΄μ μμ μ μ§μ μ μΌλ‘ νλλ‘ λμμ€λ€. κ²μμ λ€ λ§λ€κ³ λμ μ€νμ νλλ°, μκΎΈ ν¬λμκ° λμ κ²μμ΄ κΊΌμ Έλ²λ¦¬λ©΄ λ§€μ° νλ§ν κ²μ΄λ€. νΉν λ©λͺ¨λ¦¬ μ΄μμ κ²½μ°, μ νν μ΄λμ λ©λͺ¨λ¦¬κ° μ€μΌλμλμ§ κ°λ° λ¨κ³μμλ νμ νκΈ°κ° λ§€μ° μ΄λ ΅κ³ ν μ€νΈ λΉμ©μ΄ ν° νΈμ΄λ€. λ©λͺ¨λ¦¬ μ΄μλ₯Ό λλ²κΉ νκΈ° μν μ’μ λ°©λ²μ΄ νλ μλλ°, λ°λ‘ U..
μΈλ¦¬μΌμμ TMap μ Compare Functor μ§μ νκΈ° ν΅μ¬ : 1. C++ μμλ Functor class λ₯Ό λ£μ΄ μ£ΌκΈ°λ§ νλ©΄ λλ€. 2. TMap μμλ TMap μμ²΄κ° κ·Έλ₯ unordered_map μ΄λΌ κ·Έλ° κ±΄ μλ€. λ§μ½ Predicate λ₯Ό μ§μ νκ³ μΆμΌλ©΄, TSortedMap μ μ¬μ©νμ! 3. TMap μ μ λ ¬ν λλ Sort λ₯Ό μ¬μ©νμ... ν... C++ μμλ TMap μμ Key κ°μ μ΄μ©ν μ λ ¬μ μμμΌλ‘ νκ³ μΆμ λ, std::less λ std::greater κ°μ predicate ν΄λμ€λ₯Ό μ¬μ©νλ€. νΉμ μλμ κ°μ΄ Functor class λ₯Ό λ§λ€μ΄ 3λ²μ§Έ μΈμμ λ£μ΄ μ£ΌκΈ°λ§ νλ©΄ λμλλ°... #include #include #include class MyCo..
μΈλ¦¬μΌ μλ¬ : Missing '*' in Expected a pointer type ν΅μ¬ : 1. UFUNCTION ν¨μμ μΈμλ‘, UStruct νμ μ΄ μλλ° ν¬μΈν° νμμ΄ μλ κ²½μ° 2. μΆν μΆκ° 3. μΆν μΆκ° μΈλ¦¬μΌ μλ¬ λ‘κ·Έ μ€ μλμ κ°μ λ΄μ©μ΄ λ° λκ° μλ€ : Missing '*' in Expected a pointer type μμ κ°μ μλ¬μ κ²½μ°, μ νν λ κ³ μΉλΌλμ§ λͺ°λΌ ν€λ©λκ° μλ€. κ·Έλ΄ λλ μλμ κ°μ μν©μ 체ν¬ν΄ 보μ! 1. UFUNCTION ν¨μμ μΈμλ‘, UStruct νμ μ΄ μλλ° ν¬μΈν° νμμ΄ μλ κ²½μ° λ€μκ³Ό κ°μ μμ λ₯Ό 보μ : UFUNCTION() void OnSomeEvent(UObject* InObject, UUserWidget& InWidget); ..
μ΄ κ°μλ μ ν¬λΈμ 무λ£λ‘ 곡κ°λμ΄ μλ νμ ν κ΅μλμ μ»΄ν¨ν° κ·Έλν½μ€ κ°μ’λ₯Ό μ 리ν κΈμ λλ€. μμΈν λ΄μ©μ κ°μλ₯Ό μ§μ λ€μΌμκ±°λ μ± μ ꡬμ νμ μ νμΈν΄ 보μΈμ. κ°μ μλ£λ κΉν λ§ν¬μ μ¬λΌμ μμ΅λλ€. μμ½ : 1. GPU ν μ λ μ΄μ μ μ΄μ©ν΄ 볡μ‘ν νλ©΄μ μ€μκ°μ μμ±ν μ μλλ°, λνμ μΌλ‘ λ³μ 맀ν(Displacement Mapping) κ³Ό PN-μΌκ°νμ΄ μλ€. μ€μ λ‘λ λ³μ 맀νμ λ§μ΄ μ¬μ©νλ€. 2. λ¨Όμ , 컨νΈλ‘€ μμ΄λλ ν¨μΉ(patch) μ 보λ₯Ό λ°μ, ν μ λ μ΄μ μ μΌλ§λ μκ² μͺΌκ° μ§νν μ§λ₯Ό ν μ λ μ΄ν°μκ² μλ €μ€λ€. κ·ΈλΌ ν μ λ μ΄ν°λ λ 벨μ λ§κ² ν¨μΉλ₯Ό μͺΌκ° μ μμ(Domain) μ μμ±νλ€. μμ± μμ΄λλ 2μ°¨μ λ©μμ κ° μ μ λ§λ€ μ¬κ°ν ν¨μΉμ ν μ μ μμ±ν ν, νμ΄νΈ 맡(..
μ΄ κ°μλ μ ν¬λΈμ 무λ£λ‘ 곡κ°λμ΄ μλ νμ ν κ΅μλμ μ»΄ν¨ν° κ·Έλν½μ€ κ°μ’λ₯Ό μ 리ν κΈμ λλ€. μμΈν λ΄μ©μ κ°μλ₯Ό μ§μ λ€μΌμκ±°λ μ± μ ꡬμ νμ μ νμΈν΄ 보μΈμ. κ°μ μλ£λ κΉν λ§ν¬μ μ¬λΌμ μμ΅λλ€. μμ½ : 1. λ² μ§μ΄ 곑μ μ, μ£Όμ΄μ§ μ μ (control point)μ μλ 곑μ μ΄λ€. μ μ΄ N κ° μμλ, N-1 μ°¨ λ² μ§μ΄ 곑μ μ λ§λ€ μ μλλ°, κ·Έλ₯ μ ν 보κ°μ μ¬λ¬ λ² λ°λ³΅ν΄μ μ·¨νλ©΄ λλ€. μ΄ κΈ°λ²μ λ μΉ΄μ€ν μ‘° μκ³ λ¦¬μ¦μ΄λΌκ³ νλ€. 2. ν μ λ μ΄μ μ, μ»΄ν¨ν°κ° 곑μ λ° κ³‘λ©΄μ μ²λ¦¬νλ λ°©μμΌλ‘, λ² μ§μ΄ 곑μ λ° κ³‘λ©΄μ μμ μ λΆμ΄λ ν΄λ¦¬κ³€μ μ‘°ν©μΌλ‘ μͺΌκ°λ κ³Όμ μ μλ―Ένλ€. κ°κ²©μ΄ μμ μλ‘ λ 맀λν 곑면μ λ§λ€ μ μμ κ²μ΄λ€. 컨νΈλ‘€ ν¬μΈνΈλ₯Ό κΈ°μ€μΌλ‘ μ ν 보κ°μ λ°λ³΅νμ¬ ν¨μΉ..