본문 바로가기

네트워크, 서버/멀티쓰레딩, 비동기처리2

(멀티쓰레딩, 비동기처리)다중 쓰레드 동기화 - Mutex 임계영역이란? - 함수 내에 둘 이상의 쓰레드가 동시에 실행하면 문제를 일으키는 하나 이상의 문장으로 묶여있는 코드블록 이러한 임계영역에서 문제를 피하고 다중 쓰레드를 동기화 시키는데 여러 기법들이 존재한다. 운영체제 마다 각 기법의 구현방법이 다르다. Mutex 임계영역을 통과할때 사용하는 자물쇠라고 보면된다. - 과정 뮤텍스 오브젝트를 초기화 해준 후 임계영역 진입부에 뮤텍스락을 걸어준다. 현재 진입한 스레드 외에 다른 스레드는 락을건 부분에서 락이 풀릴때까지 블로킹 되며 진입스레드가 작업 마치고 락을 풀고 나가면 기다리던 스레드 중 하나가 다시 진입하고 락을 걸게된다. 모든 임계영역내 작업을 마친 뒤 해당 뮤텍스 오브젝트를 해제하면 끝난다. 하지만 이렇게 락을 걸었어도 락을건 Blocking상태에서.. 2020. 10. 13.
(멀티쓰레딩) 동시성과 병렬화 동시성과 병렬성의 의미 동시성 : 하나의 작업 주체가 여러 작업을 빠르게 바꿔가며 마치 동시에 진행하는 것처럼 하는것으로 멀티 쓰레딩이라고 보면 된다. 동시에 실행되기 때문에 하나의 공유자원에 접근한다면 레이스컨디션과 같은 임계영역 문제가 발생하기 쉽다. 그렇기에 항상 사용하는 자원에 대해 lock을 걸고 접근해야 하는 규칙이 존재한다. 병렬화 : 여러 작업주체가 자신의 할당량을 수행하여 작업 시간을 단축하는것으로 cpu의 멀티코어에 의한 멀티 프로세싱 이라고 보면 된다. 동시성과 병렬성의 적용 문제 동시성은 CPU Bound 보다 IO Bound에 적용하면 더 좋은데, CPU Bound에서는 컨텍스트 스위치 비용이 더 커질 수 있기 때문이다. 반면 처리속도가 느려 스위칭 횟수가 적은 IO Bound에서.. 2020. 9. 9.