코루틴에서는 다른 작업이 계속 실행될 수 있도록 현재 실행 중인 작업이 자동으로 스케줄러에 제어를 다시 전달해야 합니다. 이는 스케줄러가 의도와 관계없이 실행 중인 작업을 강제로 중단할 수 있는 선점형 멀티태스킹의 정반대입니다.
제어권을 자동으로 넘기는 프로그램에만 의존한다면 일부 악성 프로그램은 다른 작업과 공유하지 않고 모든 CPU 시간을 쉽게 차지할 것입니다.
코루틴의 스케줄링은 코루틴 자체가 외부 스케줄러에 대한 제어 권한을 적극적으로 포기함으로써 구현됩니다.
xrange 함수를 구현하는 생성기의 예로 돌아가면 전체 실행 프로세스의 교대를 다음과 같이 표현할 수 있습니다. 다음 그림:
코루틴은 선점보다는 협업을 통해 작업을 전환하는 순수한 사용자 모드 스레드로 이해될 수 있습니다. (추천 학습: PHP 프로그래밍 초보부터 능숙까지 )
프로세스나 스레드에 비해 코루틴의 모든 작업은 운영체제 커널 모드가 아닌 사용자 모드에서 완료할 수 있으며 생성 및 전환 소모량이 매우 적습니다. .
간단히 말해서 코루틴은 현재 작업의 실행을 중단하고, 현재 지역 변수를 저장하고, 다음 번 실행을 계속하기 위해 현재 지역 변수를 복원하는 방법을 제공합니다.
코루틴 코루틴 지원은 생성기를 기반으로 생성기로 데이터를 다시 보내는 기능을 추가합니다(호출자는 호출된 생성기 함수에 데이터를 보냅니다). 이는 생성기를 호출자의 단일 변경 통신에 넣습니다. 2.
코루틴을 사용한 후의 코드
첫 번째 초안, 생성기 실행을 수동으로 조정
# 本代码手动调整了进程执行代码的顺序,当然本代码实现不用协程也可以,只是利用本流程说明协程作用 # 生成器给了我们函数中断,协程[生成器send]给了我们重新唤起生成器函数的能力 function printNumWithGen($max) { for ($i=0; $i<$max; $i++ ) { $res = yield $i; echo $res; } } $gen1 = printNumWithGen(3); $gen2 = printNumWithGen(3); // 手动执行caller1 再 caller2 $gen1->send("调度者: caller1 打印:" . $gen1->current() . PHP_EOL); $gen2->send("调度者: caller2 打印:" . $gen2->current() . PHP_EOL); // 手动执行caller1 再 caller2 $gen1->send("调度者: caller1 打印:" . $gen1->current() . PHP_EOL); $gen2->send("调度者: caller2 打印:" . $gen2->current() . PHP_EOL); // 手动执行caller2 再 caller1 $gen2->send("调度者: caller2 打印:" . $gen2->current() . PHP_EOL); $gen1->send("调度者: caller1 打印:" . $gen1->current() . PHP_EOL); # output 调度者: caller1 打印:0 调度者: caller2 打印:0 调度者: caller1 打印:1 调度者: caller2 打印:1 调度者: caller2 打印:2 调度者: caller1 打印:2
위 내용은 PHP 코루틴이란 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

Eclipse용 SAP NetWeaver 서버 어댑터
Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

VSCode Windows 64비트 다운로드
Microsoft에서 출시한 강력한 무료 IDE 편집기

SublimeText3 Linux 새 버전
SublimeText3 Linux 최신 버전

mPDF
mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.

드림위버 CS6
시각적 웹 개발 도구
