동일한 주소 공간과 사용 가능한 모든 데이터를 공유하는 병렬 엔터티의 이러한 능력은 다중 프로세스 잠금으로 표현할 수 없습니다. 왜냐하면 여러 프로세스가 서로 다른 주소 공간을 갖기 때문입니다.
스레드는 프로세스보다 더 가볍고 빠릅니다.
공용 변수를 동시에 읽거나 쓰면 예측할 수 없는 오류가 발생하는 경우가 많습니다.
검증 아이디어
코드 수준에서만 문제를 고려할 수는 없으며, 코드가 실행되는 환경도 고려해야 합니다. 가상 머신의 설정을 관찰한 결과 4개의 프로세서가 있으며 최소 2개의 프로세서가 처리 중이라는 것을 발견했습니다. 다른 스레드와 스레드가 있는 경우 두 프로세서의 경우 동시에 액세스할 경우 5000 미만이 될 확률이 상대적으로 높으며 이는 병렬 실행으로 인해 발생합니다.
프로세서 하나만 활성화하면 스레드 1개만 실행되고 나머지 4개 스레드는 절대 실행되지 않습니다. 두 스레드가 동시에 실행되는 상황은 없습니다.
5000 미만으로 나타날 확률은 매우 적습니다(이유는 val 값 1을 읽은 후 ++돌아갈 시간이 없었기 때문입니다. 이때 타임 슬라이스가 도착했고 스위치가 다른 스레드로 전환할 때 값은 여전히 1이고, 더하기를 추가하고, 현장 복구를 추가하고, 이 시나리오가 발생할 확률은 매우 낮습니다.) 1개의 프로세서를 병렬화할 수 없습니다.위 내용은 Linux 멀티스레딩 및 동일한 메모리에 대한 멀티스레드 동시 액세스 문제를 해결하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!