Kotlin/8. Thread
8.5 Thread Synchronization
yswn1531
2023. 10. 9. 23:19
Thread Synchronization
- 다중 Thread 환경에서 한 Thread가 공유자원을 사용하는 도중에 다른 Thread가 접근해서 자원을 쓰려는 것을 막는 것
- 동시성 문제: 위에 상황에서 발생하는 문제
- 임계 영역: 동시성 문제가 발생 할 수 있는 자원
- 종류
- Mutex
- Synchronized
- Semaphore
Mutex
- lock / unlock을 통해서 임계 영역에 접근을 막는 방법
- Thread 대기는 Queue를 사용하여 관리
- lock을 건 Thread가 lock을 해제 해야함
- lock
- 현재의 임계 구역에 들어갈 권한을 획득
- 다른 스레드가 임계 영역을 사용중이면 종료할 때까지 대기
- unlock
- 현재의 임계 영역을 다 사용했음을 통지
- 대기중인 Thread가 임계 영역에 진입 가능
Synchronized
@Synchronized
fun needSynchro(){
//synchronized(this)
}
- 동시성이 필요한 임계영역에 사용
- 함수에 선언하거나 synchronized(this)를 사용
Semaphore
- 세마포어 객체내의 n개의 임계영역에 대한 접근 제한 가능
- wait, signal을 통해 관리
- Producer Thread, Consumer Thread로 나눔