• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    미해결

lock 질문입니다.

21.12.22 15:50 작성 조회수 167

0

저는 한쪽에만 lock을 걸으면 어떻게 될까? 라는 생각을 가지고 Thread_1에는 lock을 걸고, Thread_2에는 lock을 걸지 않았습니다.

Thread_2에서는 lock을 걸지 않아서 lock의 영향을 받지 않기 때문에 Thread_1에서 작업중인 number에 접근할 수 있고, Thread_1에서도 Thread_2에서 작업중인 number에 접근할 수 있어서 난수가 나올 것이라고 예상했습니다.

하지만 몇번을 돌려봐도 결과는 난수가 아닌 0이 나왔습니다.

그리고 질문들을 살펴보다 보니 새로운 object _obj2를 만들어서 Thread_2에 lock을 했을 때는 난수가 나온다는 것을 알았습니다.

서로 다른 object를 통해 lock을 하면 난수가 나온다는 것은 이해했고 이게 제가 예상했던 결과인데, 한쪽에만 lock을 걸었을 경우에는 왜 0이 나오는지 잘 모르겠습니다.

답변 1

답변을 작성해보세요.

0

한쪽만 lock을 걸 경우, lock을 거는 쓰레드가
해당 변수에 상대적으로 '천천히' 접근하게 되기 때문에
그런 결과가 나온 것이 아닐까 생각됩니다.
정확히 어떻게 테스트를 하셨는지 모르겠지만,
설령 0이 나온다고 한들 그 결과가 크게 중요하지 않습니다.
왜냐하면 그 결과가 100% 보장되지 않다는 사실에는 변함이 없기 때문이죠.


김종현님의 프로필

김종현

질문자

2021.12.22

답변 감사합니다.

이론적으로는 예상한 결과가 맞다는 말씀이시죠?