Lock 기초

jinsuk·2023년 10월 26일
0
  • 임계영역
    • 동시다발적으로 쓰레드들이 접근하면 문제가 되는 코드 영역
    • 해결하기 위한 방법중 하나가 인터락
    • 또다른 방법
    • 이런 경우 내가 여기서 여기까지 끝날때까지는 다른 애들이 안 건드린다는 걸 보장하는 것
    • 쌍을 잘 맞춰줘야지 안그러면? 데드락 상황 발생
    • 다른 쓰레드가 하염없이 기다리는상황
  • 데드락이 발생할 확률을 조금이라도 줄일 수 있는 유용한방법

데드락

  • 서로 실행순서는 달리 해주면 쉽게 해결가능
  • 아무리 잘 구현한다 하더라도 데드락 상황을 완전히 막을 수는 없다.
  • 실제로 발생한 다음에 고치는게 쉽다.

  • 멀티스레드 프로그래밍에서 락이 비중이 60~70% 차지할 정도로 굉장히 중요하다.
  • 언어마다 프레임워크마다 조금씩 구현 방법이 다르다.
  • 스핀 락
    • 무조건 기다리는 메타
    • cpu 점유율이 확 튄다.
    • 무한루프를 게쏙 돌면서 기다리는 작업때문(정확히는 비었냐비었냐 계쏙 체크함)
  • 그냥 포기 하는 경우
    • 자기 소유권을 넘겨주고 다른 스레드를 실행시키러 빙의하러 돌아다니는 작업이 부하가 엄청 크다(컨텍스트 스위칭)
  • 소유권 양도하는거 까지는 비슷하지만 커널(운영체제)한테 락이 빌경우 이벤트를 발생시켜달라고 부탁
profile
공부기록용

0개의 댓글