멀티스레딩(14)
-
Python Tkinter - 6. 실전 프로젝트와 최적화
6. 실전 프로젝트와 최적화이번 주차에서는 대규모 GUI 애플리케이션 설계, 성능 최적화, 멀티스레딩, 비동기 작업 처리를 배웁니다.특히 모듈화, 이벤트 루프 최적화, 데이터베이스 연동 및 백그라운드 작업 처리를 적용하여 고급 TODO 리스트 애플리케이션을 제작하고, 개인 프로젝트를 기획 및 구현하는 것이 목표입니다.이론1. 대규모 애플리케이션 설계간단한 GUI 애플리케이션은 단일 파일로 작성해도 문제가 없지만, 기능이 많아질수록 코드의 유지보수와 성능 관리가 어려워지므로 모듈화와 클래스 기반 설계가 필요합니다.✅ 모듈화 적용애플리케이션을 기능별로 분리하면 코드의 가독성이 좋아지고 유지보수가 쉬워집니다.예를 들어, 데이터베이스, UI, 이벤트 처리를 각각의 파일로 분리하면 관리가 더 용이해집니다.📁 프..
2025.02.28 -
C++ STL: 10장 - STL의 한계와 대안
10.1 STL의 한계STL은 범용적인 라이브러리이지만, 특정 상황에서는 한계가 존재합니다. 이 장에서는 STL의 제약과 이를 극복할 수 있는 방법을 소개합니다.10.1.1 STL 사용 시 문제점실시간 시스템에서의 한계:STL 컨테이너의 동적 메모리 할당은 예측 가능한 성능을 요구하는 시스템에서 문제가 될 수 있습니다.메모리 사용량:STL 컨테이너는 내부 메모리 관리를 위해 추가적인 오버헤드가 발생할 수 있습니다.멀티스레딩 환경:STL은 스레드 안전하지 않으므로, 동기화를 별도로 구현해야 합니다.10.1.2 STL의 확장과 최적화STL의 한계를 극복하기 위해 다음과 같은 방법을 고려할 수 있습니다:사용자 정의 할당자:특정한 메모리 요구 사항에 맞게 할당자를 커스터마이징하여 성능을 최적화합니다.스레드 안전..
2025.02.26 -
C++ STL: 7장 - STL과 멀티스레딩 활용
7.1 C++과 멀티스레딩 개요C++11부터 표준 라이브러리에서 멀티스레딩 지원이 강화되었습니다. STL은 멀티스레딩을 직접적으로 지원하지는 않지만, C++ 표준 스레딩 라이브러리(, , 등)와 함께 사용하여 멀티스레딩 환경에서 STL 컨테이너와 알고리즘을 효과적으로 활용할 수 있습니다.7.2 STL 컨테이너와 멀티스레딩7.2.1 컨테이너의 스레드 안전성STL 컨테이너는 기본적으로 스레드 안전하지 않습니다.단일 스레드에서 사용하거나, 여러 스레드가 컨테이너에 읽기만 수행할 때는 안전합니다.쓰기 작업이 포함된 경우, 동기화(std::mutex)가 필요합니다.7.2.2 컨테이너 동기화 기법뮤텍스 사용: 스레드 간 동기화를 위해 std::mutex를 사용하여 데이터 접근을 제어합니다.예제:#include #..
2025.02.26 -
운영체제 락 개념과 동기화 기법 (마무리: 락(Lock)과 동기화 정리)
📌 마무리: 락(Lock)과 동기화 정리멀티스레딩 환경에서는 여러 개의 스레드가 동시에 실행되면서 공유 자원(Shared Resource) 에 접근하게 됩니다.이 과정에서 데이터 무결성(Data Integrity) 을 보장하고, 경쟁 상태(Race Condition) 를 방지하기 위해 락(Lock) 을 사용하여 동기화를 수행합니다.이번 학습에서는 뮤텍스(Mutex), 재진입 가능 락(RLock), 읽기-쓰기 락(RWLock), 스핀락(Spinlock), 세마포어(Semaphore) 등을 다루며,각 기법이 어떤 상황에서 적절한지, 어떤 문제점을 가질 수 있는지, 어떻게 해결해야 하는지 를 배우고 실습하였습니다.✔ 락을 활용하여 동기화를 이해하기🔹 락(Lock)이 필요한 이유멀티스레드 프로그래밍에서 여러..
2025.02.26 -
운영체제 락 개념과 동기화 기법 (4. OS 내부 락과 문제 해결)
🔍 락의 문제점과 해결 방법 (데드락, 우선순위 역전)멀티스레딩 환경에서 락(Lock)을 사용할 때 데드락(Deadlock) 및 우선순위 역전(Priority Inversion) 같은 문제가 발생할 수 있습니다.이를 방지하고 해결하기 위한 운영체제(OS)에서 제공하는 기법들을 학습해보겠습니다.🎯 학습 목표락(Lock)의 주요 문제점:데드락(Deadlock): 여러 개의 스레드가 서로 Lock을 해제하기를 기다리며 무한 대기 상태에 빠지는 문제.우선순위 역전(Priority Inversion): 낮은 우선순위 스레드가 높은 우선순위 스레드보다 먼저 Lock을 획득하여 성능 저하를 유발하는 문제.해결 방법:데드락 해결 방법: 예방, 회피, 탐지 기법 학습.OS 커널 락(Kernel Lock) 학습: Li..
2025.02.26 -
운영체제 락 개념과 동기화 기법 (Mutex, RLock, RWLock, 스핀락, 세마포어 비교 요약 정리)
🔍 Mutex, RLock, RWLock, 스핀락, 세마포어 비교 요약 정리운영체제(OS)에서 멀티스레딩 동기화 기법으로 사용되는 뮤텍스(Mutex), 재진입 가능 락(RLock), 읽기-쓰기 락(RWLock), 스핀락(Spinlock), 세마포어(Semaphore) 의 차이를 정리했습니다.1. 개념 요약 동기화 기법 개념 특징사용 예시Mutex (뮤텍스)하나의 스레드만 임계 영역 접근 가능다른 스레드는 Lock이 해제될 때까지 대기 (Blocking)단순한 공유 자원 보호RLock (재진입 가능 락)같은 스레드가 여러 번 Lock 가능Lock 획득 횟수만큼 Unlock 필요재귀 호출, OOP에서 동일 객체 내 여러 메서드 사용RWLock (읽기-쓰기 락)여러 개의 스레드가 동시에 읽기 가능, 쓰기는 ..
2025.02.26