-
카테고리
-
세부 분야
게임 프로그래밍
-
해결 여부
미해결
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이 나오는지 잘 모르겠습니다.
답변을 작성해보세요.
0
Rookiss
지식공유자2021.12.22
한쪽만 lock을 걸 경우, lock을 거는 쓰레드가
해당 변수에 상대적으로 '천천히' 접근하게 되기 때문에
그런 결과가 나온 것이 아닐까 생각됩니다.
정확히 어떻게 테스트를 하셨는지 모르겠지만,
설령 0이 나온다고 한들 그 결과가 크게 중요하지 않습니다.
왜냐하면 그 결과가 100% 보장되지 않다는 사실에는 변함이 없기 때문이죠.
답변 1