>  기사  >  백엔드 개발  >  PHP 멀티스레딩이 무슨 뜻인가요?

PHP 멀티스레딩이 무슨 뜻인가요?

清浅
清浅원래의
2019-03-15 14:19:243920검색

PHP는 기본적으로 멀티스레딩을 지원하지 않습니다. pthreads 확장을 설치하면 매개변수가 멀티스레딩을 지원하도록 스레드로부터 안전한 방식을 지정하게 됩니다. 그러나 사용 중에는 스레드 안전 문제를 고려해야 합니다.

스레드는 운영체제에서 작업 스케줄링을 위한 가장 작은 단위입니다. 프로세스에 포함되며 프로세스에서 실제 작동하는 단위입니다. 오늘 제가 공유할 내용은 스레딩 지식이 PHP에 관한 것이며 확실한 참고 가치가 있다는 것입니다. 모든 사람에게 도움이 되기를 바랍니다

PHP 멀티스레딩이 무슨 뜻인가요?

[추천 과정: PHP 튜토리얼]

Multi -threading

에 대한 이해 소위 멀티스레딩은 여러 스레드가 프로세스에서 동시에 사용될 수 있고 각 스레드가 서로 다른 작업을 병렬로 수행할 수 있음을 의미합니다. 멀티스레딩은 프로그램의 실행 효율성을 크게 향상시킵니다. 멀티스레드는 단일 스레드보다 운영 체제에 의해 예약될 확률이 더 높습니다. 그리고 더 효율적입니다. 다중 스레드는 멀티 코어 CPU의 다중 코어에서 동시에 실행될 수 있어 작업 효율성이 향상됩니다. 그리고 스레드 간의 통신이 더 간단해졌습니다.

PHP 멀티스레딩

기본적으로 PHP는 멀티스레딩을 지원하지 않습니다. 현재 일반적으로 사용되는 확장 프로그램으로는 pcnlt, POSIX, pthreads가 있습니다. 일반적으로 사용되는 것은 pthreads 확장입니다. 매개변수를 사용하여 PHP를 컴파일하는 스레드로부터 안전한 방법을 지정함으로써 멀티스레딩을 지원합니다.

스레드를 사용하기 전에 먼저 스레드 안전성 문제를 고려해야 합니다. 스레드 안전성은 다중 스레드 환경에서 함수나 함수 라이브러리가 호출될 때 여러 스레드 간의 공유 변수를 올바르게 처리하여 프로그램을 안전하게 만들 수 있다는 것을 의미합니다. 올바르게 완료될 수 있습니다

예:

멀티 스레드에 공유 변수가 있기 때문에 다음과 같은 문제가 발생할 수 있습니다.

存在一个全局数组:$arr = array('a');
A 线程获取数组长度为1;
B 线程获取数组长度为1;
A 线程pop出数组元素 $a = array_pop($arr); $a = 'a';
B 线程也pop数组元素 $b = array_pop($arr); $a = null;
但是此时B线程内就出现了错误事件,虽设置了数组长度大于0,但是没有 pop值来

PHP는 스레드 안전성을 달성합니다.

PHP는 주로 TSRM 메커니즘을 통해 스레드 안전성을 달성합니다. 이를 통해 전역 변수와 정적 변수를 분리할 수 있으며, 전역 변수와 정적 변수를 각 스레드에 복사할 수 있습니다. 각 스레드는 기본 스레드의 백업을 사용합니다. 이렇게 하면 변수 충돌과 스레드 안전 문제가 방지됩니다.

PHP의 멀티스레딩 캡슐화는 스레드 안전성을 보장하므로 개발자는 읽기 및 쓰기 충돌을 고려할 필요가 없으며 이는 코드를 더욱 안전하게 만듭니다. 그러나 여기에는 단점도 있습니다. 예를 들어 하위 스레드가 실행되기 시작하면 메인 스레드는 더 이상 하위 스레드의 실행 세부 정보를 조정할 수 없으며 메시지 전달 기능을 잃게 됩니다.

요약: 위는 다음과 같습니다. 이 기사의 전체 내용이 모든 사람에게 도움이 되기를 바랍니다.

위 내용은 PHP 멀티스레딩이 무슨 뜻인가요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.