제목이 붙은 것처럼 하나의 변수에 액세스하는 여러 스레드와 하나의 스레드 만 변수를 변경하고 다른 모든 스레드는 변수의 값을 읽습니다.전역 변수로 멀티 스레딩 : 하나의 스레드 만 변수를 변경하는 경우 변수를 잠글 필요가 있습니까?
스레드 1 :
while True:
a += 1
스레드 2, 3, 4, ...이 마찬가지로이 경우
print a
만 스레드 1 가변 a
을 변화 . 심각한 문제가 발생합니까?
a
가 업데이트되지 않을 수 있습니다로한다는 것을, 대답에서 보인다.
내가 최신 값을 얻지 못할 수도 있다는 것을 제외하고는 액세스하는 동안 변수를 잠그지 않으면 더 심각한 문제가 발생하고 코드가 손상 될 수 있습니까?
나는 이것이 언어와 관련이 있다고 생각하지 않지만, 문제가된다면, 나는 특별히 파이썬의 경우에 관심이있다.
특정 변수에 대해 경쟁 조건이 발생할 수없는 한 해당 변수를 잠글 필요가 없습니다. –
문제가 없습니다. 각 스레드는 읽은 시점에서 최신 값을 가져옵니다. – tdelaney
@JacobG. 정수는 파이썬에서 불변이다. 'a + = 1' 문은 새로운 정수를 만들고 그것을 참조하기 위해'a '를 변경합니다. –