공유 변수 및 thread.Lock

WBOY
풀어 주다: 2024-02-05 22:27:10
앞으로
1077명이 탐색했습니다.

공유 변수 및 thread.Lock

질문 내용

Java에서는 원자 연산이나 다른 스레드 동기화 메커니즘을 사용하지 않으면 스레드의 공유 변수 값이 중단될 수 있습니다.

CPython에 GIL이 제공됩니다. Lock inc의 값은 다음과 같습니다. 혼란스러운 a += 1 관용구에서도 값을 할당하기 전에 수행되는 여러 단계가 있습니다. 경쟁 조건을 방지합니다.

하지만 a = 1같은 경우에는 자물쇠가 없습니다. 스레드가 a를 업데이트한 후 스레드 A와 B가 서로 다른 a 값을 읽도록 할 수 있습니까?

이 질문을 하는 또 다른 방법은 Lock이 공유 가치 전파를 보장하는 반면 Lock이 없으면 그렇지 않습니까?입니다.


정답


문제는 a = 1。如果您在整个代码中所做的唯一一件事是将 a이 아닙니다. 전체 코드에서 수행하는 유일한 작업이 a를 다양한 값으로 설정하는 것이라면 잠금이 필요하지 않습니다.

그러나 코드의 다른 곳에서 a = a + 1을 수행하는 동안 a = 1 的同时,代码中的其他地方正在执行 a = a + 1,那么您需要锁定它们。您锁定了 a = 1,这样如果其他人递增 a,它将完全在您设置 a을 설정하는 경우 이를 잠가야 합니다. 다른 사람이 a를 증가시키는 경우 정확히 a를 설정하기 전이나 후에 발생하도록

잠그세요.

따라서 거의 모든 경우에 자신이 무엇을 하고 있는지 잘 알지 않는 한 자물쇠가 가장 간단한 해결책입니다. 🎜

위 내용은 공유 변수 및 thread.Lock의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:stackoverflow.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿