>  기사  >  PHP 프레임워크  >  Swoole 코루틴을 구현하는 방법

Swoole 코루틴을 구현하는 방법

爱喝马黛茶的安东尼
爱喝马黛茶的安东尼원래의
2019-12-10 16:20:022819검색

Swoole 코루틴을 구현하는 방법

Swoole4는 PHP 언어에 대한 강력한 CSP 코루틴 프로그래밍 모드를 제공합니다. 사용자는 다음과 같이 go 함수를 통해 코루틴을 생성하여 동시 실행 효과를 얻을 수 있습니다. 다음 코드 표시:

<?php
//Co::sleep()是Swoole提供的API,并不会阻塞当前进程,只会阻塞协程触发协程切换。
go(function (){
    Co::sleep(1);
    echo "a";
});
go(function (){
    Co::sleep(2);
    echo "b";
});
echo "c";
//输出结果:cab
//程序总执行时间2秒

사실 다중 코루틴 프로그래밍 모드는 Swoole4 이전에 구현되었습니다. 코루틴이 생성되고 전환되고 종료되면 해당 PHP 스택이 작동될 수 있습니다(생성, 전환 및 재활용). PHP 스택).

현재 코루틴 구현에서는 PHP 구문을 완벽하게 지원할 수 없습니다. 근본적인 이유는 C 스택 정보가 저장되지 않기 때문입니다. (vm 내부 또는 일부 확장에서 제공하는 API는 c 함수를 통해 구현됩니다. 이러한 함수를 호출할 때 코루틴 전환이 발생하면 c 스택은 이를 어떻게 처리해야 할까요?)

Swoole4 added 관리 c 스택의 생성에는 코루틴이 생성, 전환 및 종료될 때 c 스택의 생성, 전환 및 재활용이 수반됩니다.

Swoole4 코루틴 구현 계획은 다음과 같습니다. #

·Swoole 코루틴을 구현하는 방법

API 레이어는 코루틴을 생성하기 위한 go() 함수와 같이 사용자에게 제공되는 코루틴 관련 함수입니다. ()는 현재 코루틴이 CPU를 포기하도록 합니다. Co::resume()은 코루틴의 실행을 재개할 수 있습니다. Swoole4 코루틴은 c 스택을 관리하는 데 동시에 사용됩니다. , PHPCoroutine은 PHP 스택을 관리하는 데 사용됩니다. 그 중 Coroutine(), Yield() 및 이력서()는 C 스택의 생성 및 스왑 인 및 스왑 아웃을 구현합니다. on_resume()은 PHP 스택 내부 및 외부에서 생성 및 교체를 구현합니다. c 스택을 관리할 때 make_fcontext() 및 jump_fcontext() 함수는 모두 어셈블리 언어로 작성되어 생성 및 제거를 구현합니다. C 스택 컨텍스트 전환

#🎜 🎜#·Swoole4는 단순히 Boost.context, 즉 컨텍스트 레이어인 Context()를 캡슐화합니다. SwapIn() 및 SwapOut()은 c 스택 생성과 Swap in 및 swap out에 해당합니다.

PHP 중국어 웹사이트에는 무료 Swoole 입문 튜토리얼이 많이 있습니다. 누구나 배울 수 있습니다!

위 내용은 Swoole 코루틴을 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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