Update coroutine.md

This commit is contained in:
huangzhhui 2019-03-22 14:26:29 +08:00
parent 9513644326
commit 1fe25d94f9

View File

@ -84,10 +84,6 @@ Swoole 协程也是对异步回调的一种解决方案,在 PHP 语言下Sw
只需通过 `go(callable $callback)` 函数或 `Hyperf\Coroutine::create(callable $callable)` 即可创建一个协程,协程内可以使用协程相关的方法和客户端。
### Defer
当我们希望在协程结束时运行一些代码时,可以通过 `defer(callable $callable)` 函数或 `Hyperf\Coroutine::defer(callable $callable)` 将一段函数以 `栈(stack)` 的形式储存起来,`栈(stack)` 内的函数会在当前协程结束时以 `先进后出` 的流程逐个执行。
### 判断当前是否处于协程环境内
在一些情况下我们希望判断一些当前是否运行于协程环境内,对于一些兼容协程环境与非协程环境的代码来说会作为一个判断的依据,我们可以通过 `Hyperf\Coroutine::inCoroutine(): bool` 方法来得到结果。
@ -96,6 +92,10 @@ Swoole 协程也是对异步回调的一种解决方案,在 PHP 语言下Sw
在一些情况下,我们需要根据 `协程 ID` 去做一些逻辑,比如 `协程上下文` 之类的逻辑,可以通过 `Hyperf\Coroutine::id(): int` 获得当前的 `协程 ID`,如不处于协程环境下,会返回 `-1`
### Defer 特性
当我们希望在协程结束时运行一些代码时,可以通过 `defer(callable $callable)` 函数或 `Hyperf\Coroutine::defer(callable $callable)` 将一段函数以 `栈(stack)` 的形式储存起来,`栈(stack)` 内的函数会在当前协程结束时以 `先进后出` 的流程逐个执行。
### WaitGroup 特性
如果接触过 Go 语言,我们都会知道 WaitGroup 这一特性WaitGroup 的用途是使得主协程一直阻塞等待直到所有相关的子协程都已经完成了任务后再继续运行,这里说到的阻塞等待是仅对于主协程(即当前协程)来说的,并不会阻塞当前进程。