image.png

Lock

Principle

two atomic operations

Thread-safe

image.png

Condition Variables

Operations

image.png

  1. remove가 먼저 acquire 성공
  2. queue에 아무것도 없으므로
    1. lock풀어주기 go to sleep
  3. addtoqueue가 acquire성공
  4. addtoqueue에서 signal 이러면 remove가 wake해 acquire
  5. add에서 release 후 종료
  6. remove에서 acquire성공 후 remove
  7. remove에서 release 후 return.
  1. add가 먼저 acquire
  2. queue에 넣고 signal 아무도 깨어나지 않는다
  3. add에서 release
  4. remove에서 acquire 이후 동일