동일 프로세스의 스레드가 공유하지 않는 부분이 스레드의 스택입니다.
스레드가 공유하는 환경에는 프로세스 코드 세그먼트, 프로세스의 공개 데이터(이러한 공유 데이터를 사용하면 스레드가 서로 쉽게 통신할 수 있음), 프로세스가 연 파일 설명자, 신호 처리기, 프로세스가 포함됩니다. 현재 디렉터리 및 프로세스 사용자 ID 및 프로세스 그룹 ID.
프로세스에는 많은 공통점이 있지만 고유한 성격도 있습니다. 이러한 특성을 통해 스레드는 동시성을 달성할 수 있습니다. 이러한 성격에는 다음이 포함됩니다:
1. 스레드 ID
각 스레드에는 이 프로세스에서 고유한 고유한 스레드 ID가 있습니다. 프로세스는 이를 사용하여 스레드를 식별합니다.
2. 레지스터 그룹의 값
스레드가 동시에 실행되기 때문에 각 스레드는 한 스레드에서 다른 스레드로 전환할 때 서로 다른 실행 단서를 갖습니다. , 나중에 다시 전환할 때 스레드를 복원할 수 있도록 원래 스레드의 레지스터 세트 상태를 저장해야 합니다.
3. 스레드 스택
스택은 스레드가 독립적으로 실행되도록 하기 위해 필요합니다. 스레드 함수는 함수를 호출할 수 있고 호출된 함수는 계층별로 중첩될 수 있으므로 다른 스레드의 영향을 받지 않고 함수 호출이 정상적으로 실행될 수 있도록 스레드는 자체 함수 스택을 가져야 합니다.
4. 오류 반환 코드
동일 프로세스 내에서 동시에 실행되는 스레드가 많기 때문에 특정 스레드가 시스템 호출을 한 후 errno 값을 설정하는 경우가 있으며, 그 프로세스에서 해당 스레드는 아직 이 오류를 처리하지 않았으며 이때 스케줄러에 의해 다른 스레드가 동작하게 되므로 오류 값이 수정될 수 있습니다. 따라서 서로 다른 스레드에는 고유한 오류 반환 코드 변수가 있어야 합니다.
5. 스레드의 신호 마스킹 코드
각 스레드는 서로 다른 신호에 관심이 있으므로 스레드의 신호 마스킹 코드는 스레드 자체에서 관리되어야 합니다. 그러나 모든 스레드는 동일한 신호 처리기를 공유합니다.
6. 스레드 우선순위
스레드는 프로세스처럼 예약되어야 하므로 예약할 수 있는 매개변수가 있어야 합니다. 이 매개변수가 스레드의 우선순위입니다.
위 내용은 동일한 프로세스의 스레드가 공유하지 않는 부분은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!