컴퓨터/운영체제 OS

세마포어는 남녀관계의 추상화다

나한나한나한나 2024. 5. 30. 12:39

1. sema-down(wait🥹)

  • 남자는 여자에게 물어본다. 너 남자친구 있니?
    • 있다면 - 그녀의 곁에서 남자친구가 없어질 때까지 대기
    • 없다면 - 고백을 갈긴다. 나랑 사귀자! 고백을 거절하는 경우는 없다
  • 세마포어의 value를 확인한다. 0보다 큰가?
    • 크다면 - waiting list에 진입한다
    • 0이면 - 세마포어를 먹고 value--를 한다

2. sema-up(signal😘)

  • 여자가 이별한다. waiting-list에서 대기 중인 남자 중 우선순위가 가장 높은 남자에게 시그널을 보낸다. '나 헤어졌어'
    • 위장남사친-list에 elem이 있다면 - 술을 한 잔 하고 새로운 역사를 쓴다.
    • 위장남사친-list에 elem이 없다면 - '나 솔로임. 소개팅 받습니다'를 broadcast한다.
  • 세마포어를 먹은 스레드의 작업이 끝났다. value++ 하고 시그널을 보낸다.
    • waiting-list에 elem이 있다면 - 우선순위가 가장 높은 스레드가 세마포어를 먹고 value-- 한다.
    • waiting-list에 elem이 없다면 - value가 1인 상태로 유지된다.