认证高级PHP讲师
이해하기가 더 쉽습니다. GIL은 Python 바이트 코드가 동시에 프로세스에서 실행되는 하나의 기본 스레드만 갖도록 합니다. 그러나 바이트 코드 자체의 논리에는 스레드가 재진입할 수 있는지 확인하기 위해 여전히 잠금/상호 배제 등이 필요합니다. 왜냐하면 바이트 코드는 실행 프로세스 중 어느 시점에서든 중단되고 다른 스레드로 전환될 수 있기 때문입니다.
카운터 코드 조각: // 1단계counter = get_counter()// 2단계counter += 1/ / 3단계set_counter(카운터)
예상 결과는 두 스레드가 모두 계산되어야 하며 최종 카운터는 2여야 합니다.
이해하기가 더 쉽습니다. GIL은 Python 바이트 코드가 동시에 프로세스에서
간단한 예:실행되는 하나의 기본 스레드만 갖도록 합니다. 그러나 바이트 코드 자체의 논리에는 스레드가 재진입할 수 있는지 확인하기 위해 여전히 잠금/상호 배제 등이 필요합니다. 왜냐하면 바이트 코드는 실행 프로세스 중 어느 시점에서든 중단되고 다른 스레드로 전환될 수 있기 때문입니다.
카운터 코드 조각:
초기 카운터가 0이고 두 스레드가 동기화 없이 동시에 이 Python 코드를 실행한다고 가정합니다.// 1단계
counter = get_counter()
// 2단계
counter += 1
/ / 3단계
set_counter(카운터)
예상 결과는 두 스레드가 모두 계산되어야 하며 최종 카운터는 2여야 합니다.
단, 잠금 없음/상호 배제로 인해 실행 상황은 다음과 같습니다.