Lock-free 작업 큐 스레드풀 구현하기

지난번에 만들었던 스레드풀은 mutex를 이용하여 하나의 작업 큐(공유자원)을 lock-unlock 을 이용하여 각 스레드가 작업을 가져갔습니다. 스레드가 많고 작업 시간이 짧을 수록 더 많은 경쟁을 할 것인데 이로 인해 작업을 처리하는 비용보다 작업을 빼오는 오버헤드가 더 클 것 같습니다. 😨 💡 항상 Lock-free가 빠른 것은 아님! 따라서 벤치마킹 후 성능이 좋은 쪽을 선택해야 합니다. 🚀 Lock-free 작업 큐 구현 기존 스레드풀에서 thread-unsafety 였던 큐를 Lock-free 큐로 변경을 하려고 합니다. 그러기 위해 큐를 직접 구현해야 하는데 큐의 조건은 다음과 같습니다....

2025년 10월 13일 · 7 min · 1305 words · JongBin

멀티 스레드와 std::atomic 객체 공부 - 1

멀티 스레드 환경에서 공유 자원은 항상 mutex의 lock - unlock 을 통해 임계 구역을 만든 후 다뤘었습니다. 그러다가 Lock-free 라는 개념을 접했고 std::atomic 객체를 사용해 보면서 여러 스레드가 동시에 공유 자원에 접근하게 된다면 어떻게 보일지 다시 생각해 보게 됐습니다. 🔍 원자성 💡 Quotation 원자성(原子性, atomicity)은 어떤 것이 더 이상 쪼개질 수 없는 성질을 말한다. 어떤 것이 원자성을 가지고 있다면 원자적(atomic)이라고 한다. 어떠한 작업이 실행될 때 언제나 완전하게 진행되어 종료되거나, 그럴 수 없는 경우 실행을 하지 않는 경우를 말한다....

2025년 10월 10일 · 5 min · 933 words · JongBin

멀티 스레드와 std::Atomic 객체 공부 2

🔬 단순 카운트 테스트 (std::atomic vs mutex) 스레드: 12개 스레드당 카운팅: 5천만개 std::atomic 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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 #include<iostream> #include<iomanip> #include<atomic> #include<thread> #include<mutex> #include<chrono> #include<vector> const size_t THREAD_NUM = 12; const size_t COUNT_NUM = 50'000'000; std::atomic<int> atomic_counter(0); void increse_counter_with_atomic(std::memory_order mo) { for(size_t i = 0; i < COUNT_NUM; i++) { atomic_counter....

2025년 10월 10일 · 3 min · 531 words · JongBin

Flutter 환경 구성하기

💡 Quotation 플러터(Flutter)는 구글이 출시한 오픈 소스 크로스 플랫폼 GUI 애플리케이션 프레임워크이다. 안드로이드, iOS, 윈도우즈, 리눅스 및 웹용 애플리케이션과 구글 퓨시아용 앱의 주된 소스코드로 사용된다. 옛날에는 안드로이드 앱을 만들려면 Java 코드로, IOS 앱을 만들려면 Object-C 또는 Swift 를 사용해서 만든 것 같았는데 찾아보니 하나의 코드로 모바일 심지어 웹 까지 만들 수 있는 프레임워크가 있다니 감탄하며 사용해 보려고 합니다. 플러터가 출시된지는 현재 기준으로 8년이 넘었네요.. 빠르게 개발 환경을 구성해 보도록 합시다....

2025년 09월 17일 · 2 min · 222 words · JongBin

유니티 Physic Material 사용하기

유니티 Physic material 사용하기 💡 Physic Material 은 충돌하는 오브젝트의 마찰 또는 바운스 효과를 조정하는 데 사용합니다. - Unity document Player 객체의 조작감을 손보고 있었는데 도저히 원하는 조작감이 나오지 않아 여러가지 찾아보던 중 Physic material 이라는 것을 알게 되어 글로 남기려고 합니다. 😭 Collider component 물리 재질은 콜라이더 컴포넌트에서 추가할 수 있으며 기본값이 아닌 다른 재질로 설정하고 싶다면 Physic material 을 새롭게 만들어서 추가하면 적용됩니다. 😎 🚀 Physic material 물리 재질에는 다음과 같은 속성이 있습니다....

2025년 04월 26일 · 2 min · 221 words · JongBin