三十、Swoole 基础学习笔记 - Swoole 多种方式创建协程

作者: 温新

分类: 【Swoole 系列】

阅读: 1570

时间: 2023-03-13 12:10:38

hi,我是温新,一名PHPer

文章基于 Swoole 5.0.1 版本编写。

学习目标:掌握怎么创建协程

说明:本篇文章结合官方文档编写及参考网络资料编写,虽非全部原创,但也是结合了自己的理解,若转载请附带本文 URL,编写不易,持续编写更不易,谢谢!

了解了协程是什么,那么开始创建协程。本篇文章通过 4 种方式来创建协程。

Swoole 中大量使用了短名,因此要需要在 php.ini 配置中开启 Swoole 短名配置:swoole.use_shortname=On

方式一

<?php
// 30-swoole-coroutine-create.php
echo 'start' . PHP_EOL;
Swoole\Coroutine::create(function () {    
	// 模拟 IO 操作
    // 当遇到 IO 等操作时,协程会被挂起
    Swoole\Coroutine::sleep(1);
    echo 'hello coroutine end' . PHP_EOL;
});
echo 'end' . PHP_EOL;

输出结果

$php 30-swoole-coroutine-create.php 
start
end
hello coroutine end

方式二: go 函数创建协程

<?php
    
echo 'start' . PHP_EOL;
go(function () {
    Swoole\Coroutine::sleep(1);
    echo 'hello coroutine end' . PHP_EOL;
});
echo 'end' . PHP_EOL;

方式三:协程容器

<?php
    
echo 'start' . PHP_EOL;
$scheduler = new Swoole\Coroutine\Scheduler;
$scheduler->add(function () {
    Co::sleep(1);
    echo 'hello coroutine' . PHP_EOL;
});
echo 'end' . PHP_EOL;
$scheduler->start();

方式四:协程容器-短名称创建

echo 'start' . PHP_EOL;
Co\run(function () {
    Co::sleep(1);
    echo 'hello coroutine' . PHP_EOL;
});
echo 'end' . PHP_EOL;

本篇文章学习了怎么创建协程,下篇文章将学习协程 API。

请登录后再评论