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로 나눔