pthread_rwlock_t: 읽기/쓰기 락 (Read-Write Lock)개념읽기 작업은 동시에 여러 개 가능,쓰기 작업은 오직 하나만 가능하도록 제어하는 락.다수의 reader는 동시에 접근 가능단 하나의 writer만 접근 가능하고, 이 동안 reader도 접근 불가읽기 작업이 많은 경우 성능 향상 가능.핵심 동작 원리락 요청허용 조건읽기 락쓰기 락이 잡혀 있지 않으면 여러 개 허용쓰기 락아무도 락을 잡고 있지 않아야 허용 (reader, writer 모두 없어야 함)관련 함수 (POSIX Threads)pthread_rwlock_t rwlock = PTHREAD_RWLOCK_INITIALIZER;pthread_rwlock_init(&rwlock, NULL);pthread_rwlock_rdlock..
조건 변수란?조건 변수(Condition Variable)는 공유 자원의 상태가 어떤 조건을 만족할 때까지 쓰레드를 기다리게 하거나, 그 조건이 만족되면 다른 쓰레드를 깨우는 동기화 도구다.조건 변수의 동작 구조조건 변수는 반드시 mutex와 함께 사용된다.전형적인 흐름1. 쓰레드 A:pthread_mutex_lock(&mutex);while (조건이 false) pthread_cond_wait(&cond, &mutex); // 대기 상태 진입// 조건이 만족되면 계속 진행pthread_mutex_unlock(&mutex);2. 쓰레드 B (조건 만족시키는 측):pthread_mutex_lock(&mutex);// 조건을 true로 만드는 작업pthread_cond_signal(&cond); // ..
1. pthread_mutex_t: 상호배제(Mutual Exclusion)개념여러 쓰레드가 공유 자원에 동시 접근하지 못하도록 막는 도구.한 번에 하나의 쓰레드만 임계구역(Critical Section)을 실행할 수 있도록 보장.주요 함수pthread_mutex_t lock = PTHREAD_MUTEX_INITIALIZER; // 정적 초기화pthread_mutex_init(&lock, NULL); // 동적 초기화pthread_mutex_lock(&lock); // 락 획득 (다른 쓰레드가 잡고 있으면 대기)pthread_mutex_unlock(&lock); // 락 해제pthread_mutex_destroy(&lock); // 소멸 (동적으로 생성..
정글 8주차에 웹서버를 구현하다 보니 쓰레드를 사용해서 병렬 처리를 해야 했다. 그래서 당장 구현을 할 수준으로만 이해를 한 뒤 구현을 끝낸 지금 다시 쓰레드에 대해 깊게 이해를 하려고 한다. 그래서 이번 Deep Dive에서는 프로세스가 아닌 쓰레드를 주로 다룰 생각이다.1. 프로세스 vs 쓰레드 차이프로세스(Process)정의: 실행 중인 프로그램. 운영체제로부터 독립된 주소 공간, 자원(File descriptor, Stack, Heap 등)을 부여받음.특징:각각의 프로세스는 커널에서 독립적으로 관리됨 (PID, 메모리 맵 등).프로세스 간 데이터 공유가 어렵다 (보통 IPC, Shared Memory, Pipe 등 필요).생성/문맥전환 비용이 큼 (Context switch: PCB 저장/복원 포..