>  기사  >  백엔드 개발  >  공유 변수 및 thread.Lock

공유 변수 및 thread.Lock

WBOY
WBOY앞으로
2024-02-05 22:27:101044검색

공유 변수 및 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으로 문의하시기 바랍니다. 삭제