태그: 멀티스레드
8편
-
C++ 대용량 이미지 처리: OpenCV Mat 참조 카운팅, 필터·변환, SIMD, 멀티스레드 파이프라인
썸네일을 만들다 메모리가 터지거나 회전 후 이미지가 잘리는 문제를 OpenCV로 해결하는 방법을 다룹니다. cv::Mat 참조 카운팅과 스트리밍 로드, 블러·샤프닝·Canny 필터, 리사이즈와 회전, 색공간과 EXIF 방향 처리, SIMD·멀티스레드 파이프라인을 설명합니다.
-
Java 멀티스레드 | Thread, Runnable, Executor
Thread 상속보다 Runnable 구현을 권장하는 이유, ExecutorService 스레드 풀과 Callable·Future로 결과를 받는 방법, synchronized 메서드와 블록으로 경쟁 상태를 막는 법을 병렬 다운로더 예제로 설명합니다.
-
C++ 멀티스레드 간헐적 크래시: ThreadSanitizer로 데이터 레이스 찾고 mutex·atomic으로 고치기
싱글스레드에선 멀쩡하던 코드가 멀티스레드에서 간헐적으로 죽을 때, ThreadSanitizer로 데이터 레이스를 찾아내고 mutex·lock_guard·atomic 중 무엇으로 동기화할지, 데드락과 거짓 공유는 어떻게 피할지 예제로 설명합니다.
-
C++17 스레드 풀 만들기: 작업 큐, future 반환, 우선순위·취소, 요청마다 스레드를 만들 때의 문제
요청마다 std::thread를 만들다 스레드가 1000개로 불어난 상황에서 출발해 C++17 스레드 풀을 작업 큐, future 반환 submit, 우선순위, graceful shutdown 순서로 구현합니다. 참조 캡처 use-after-free, 중첩 submit 데드락, 백프레셔 부재도 다룹니다.
-
C++ 멀티스레드 성능 튜닝 | 락 프리·작업 훔치기·스레드 풀 [#51-3]
스레드를 늘렸는데 오히려 느려지는 원인을 락 경합과 false sharing에서 찾고, 캐시 라인 정렬, ABA 문제를 고려한 lock-free 스택, SPSC 큐, 작업 배치와 work stealing 스레드 풀로 개선하는 과정을 C++ 코드로 다룹니다.
-
Data Race 잡는 법: Mutex와 Atomic 중 뭘 써야 할까
카운터가 깨지거나 check-then-act로 재고가 어긋나는 Data Race 사례를 두고 mutex와 atomic 중 무엇을 쓸지 판단 기준을 제시합니다. memory_order 요약, CAS 개념, 순서 잠금과 std::lock으로 데드락을 피하는 법도 다룹니다.
-
C++ 멀티스레드 Asio의 딜레마 | Data Race와 Mutex의 한계 [#2]
io_context 하나를 스레드 풀에서 여러 run()으로 돌릴 때 같은 세션의 핸들러가 동시에 실행되어 data race가 생기는 구조, 핸들러 안에서 mutex를 잡으면 처리량이 떨어지는 이유, 락을 잡은 채 다른 핸들러를 기다리다 빠지는 데드락을 설명합니다.
-
C++ 멀티스레드 네트워크 서버: io_context 스레드 풀, strand로 순서 보장, 세션 수명과 data race
Boost.Asio로 멀티스레드 서버를 만드는 방법. 여러 스레드에서 io_context 실행, strand로 순서 보장, 세션 수명 관리, 공유 상태 동기화, 채팅·HTTP 스타일 서버 예제와 벤치마크를 다룹니다.