멀티 스레드와 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

vcpkg 로 C++ 외부 종속 라이브러리 관리하기

vcpkg 로 C++ 외부 종속 라이브러리 관리하기 💡 Quotation > vcpkg는 플랫폼 간 C/C++ 패키지 관리자입니다. 수천 개의 고품질 오픈 소스 라이브러리에 액세스하여 애플리케이션을 강화하고 내부적으로 프라이빗 구성 요소 컬렉션을 공유합니다. - MSDN 윈도우와 리눅스에서 C/C++ 개발을 위해 CMake 프로젝트를 시작했는데, C/C++ 은 Python의 pip 나 Node.JS의 npm 과 같은 패키지 매니저가 없을까 하다 찾아보니 vcpkg 라는 것이 있길래 사용해 보았습니다. 마이크로소프트가 만들고 리눅스와 윈도우 둘 다 사용 가능하며 CMake 와도 찰떡이라는 말이 있습니다!...

2025년 10월 01일 · 1 min · 193 words · JongBin

Flutter 블루투스 연결 감지하기

앱을 만들고 있는데 필요한 기능이 이미 페어링된 기기가 연결됐는지 감지하는 기능인데 플러터만으로는 구현이 불가능해서 찾아보게 되었습니다. 어떻게? 앱이 백그라운드 상태일 때도 블루투스 감지 앱에서 주기적으로 체크하는 것이 아닌 콜백이나 이벤트로 처리 결정적으로 플러터에서 지원하지 않음 네이티브 코드 작성(BroadcastReceiver 및 EventChannel) EventChannel 💡 Quotation 네이티브(Android, iOS)와 플러터 간에 지속적인 이벤트 스트림을 주고받을 때 사용하는 통신 방법 ⚠️ iOS 는 작성해 보지 않음 네이티브 코드 작성 /PROJECT_DIR/android/src/kotlin/com/example/PROJECT_NAME/MainActivity.kt 안드로이드 네이티브 코드 시작점이 있는 파일인데 이곳에 서비스, 블루투스 연결 감지를 위한 코드를 작성하고 이벤트 채널을 이용하여 플러터 앱으로 전달을 하면 됩니다....

2025년 09월 20일 · 5 min · 870 words · JongBin

Flutter 환경 구성하기

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

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