기어가더라도 제대로
12. 동시성과 관련된 문제들 본문
경쟁 상황
2개 이상의 쓰레드를 사용하면서 , 동일한 메모리 접근 등으로 인해 발생할 수 있는 문제.
Thread-Safety
여러 쓰레드가 동시에 쓰여도 안전하다.
동시적 처리를 하면서(여러 쓰레드를 사용하면서도) 문제 없이 쓰레드를 안전하게 사용
교착 상태(DeadLock)
가장 좋은 예는 자기 자원을 점유한 상태에서 상대방의 자원을 접근하려고 서로 하는 상황..
두 사람이 있는데 각자 치킨 닭다리를 들고 있다.
각각의 사람들은 상대방의 치킨이 먹고 싶다.
그래서 닭다리를 쥐고있는 손의 반대 손으로 상대방의 치킨을 뺏으려고 하는 상황
Priority Inversion(우선 순위 뒤바뀜)
작업의 우선 순위를 봤을 때 Task 3 이 가장 먼저 실행이 되어야 할거같지만,
작업 1, 2 가 자원을 사용하고 있어서 실질적인 작업을 하지 못하고,
각 작업이 끝날때 까지 기다려야하는 상황
낮은 우선 순위의 작업이 자원을 배타적으로 사용하고 있을 때, 작업의 우선순위가 바뀔 수 있음
실질적으로는 Task1 -> Task 3 -> Task 2 의 순서로 이뤄진다.
- 공유 자원에 접근 시엔 동일한 QoS 사용
'CS > 동시성' 카테고리의 다른 글
11.GCD 살펴보기 (0) | 2022.09.27 |
---|---|
10. Semaphore 의 이해 (0) | 2022.09.26 |
9. Dispatch workItem (0) | 2022.09.26 |
8. 디스패치 그룹의 사용 (0) | 2022.09.26 |
7. Dispatch Group 개념 (0) | 2022.09.26 |
Comments