From 4e2b81665fbf84d6fc19eac841cbd5cd55474312 Mon Sep 17 00:00:00 2001 From: chaz6chez Date: Sun, 13 Oct 2024 23:33:40 +0800 Subject: [PATCH] doc update --- docs/doc/utils.md | 35 +++++++++++++++++++++++++++++++++-- docs/doc/webman.md | 2 +- docs/doc/workerman.md | 4 +++- 3 files changed, 37 insertions(+), 4 deletions(-) diff --git a/docs/doc/utils.md b/docs/doc/utils.md index eabcb26..0606aac 100644 --- a/docs/doc/utils.md +++ b/docs/doc/utils.md @@ -88,7 +88,8 @@ ### 自定义`Worker` -> 自定义`Worker`包含了对`Workerman\Worker`及上层应用`监听类进程`、`普通进程`的协程化实现,需要一些简单的代码入侵,兼容协程化前的逻辑。 +> - 自定义`Worker`包含了对`Workerman\Worker`及上层应用`监听类进程`、`普通进程`的协程化实现,需要一些简单的代码入侵,兼容协程化前的逻辑。 +> - 在`webman框架`中使用`Utils\Worker`作为自定义进程需要在`process`配置中指定进程类:`'workerClass' => {基于Utils\Worker实现的自定义进程类}` #### 普通进程 @@ -218,6 +219,34 @@ Pool::create('normal-object', 2, $source, true); // 此时堆数据中存在三个source对象,其中Pool池的normal-object区域存在两个source对象 + + // 等待获取normal-object区域闲置的source对象,获取到时,执行回调 + // 由于拷贝,回调执行后不会修改原有source对象的id + Pool::waitForIdle('normal-object', function ($sourceObject) { + $sourceObject->id = 2; + }); + // 输出 1 + echo $source->id; + + // 获取区域索引为1的对象,等待闲置时执行回调 + $source1 = Pool::get('normal-object', 1); + $source1->wait(function ($sourceObject) { + $sourceObject->id = 3; + }); + // 输出 1 + echo $source->id; + // 输出 3 + echo $source1->id; + + // 获取当前闲置对象,未获取到时返回null + $source1 = Pool::idle('normal-object'); + + // 销毁区域索引为1的对象 + Pool::destroy('normal-object', 1); + // 强制销毁区域索引为2的对象 + Pool::destroy('normal-object', 2, true); + // 销毁区域normal-object所有对象 + Pool::destroy('normal-object'); ``` > Tips: > - 可用于主线程初始化时对象数据的池化操作 @@ -235,11 +264,13 @@ // 此时堆数据中存在1个source对象,其中Pool池的normal-object区域是引用的source对象 - // 等待获取normal-object区域闲置的source对象,获取到时执行回调 + // 等待获取normal-object区域闲置的source对象,获取到时,执行回调 // 超时时间10秒,如果超时则抛出TimeoutException Pool::waitForIdle('normal-object', function ($source) { $source->id = 2; }, 10); + + // ... ``` > Tips: > - 可用于为资源对象的操作加锁,避免协程间的竞争状态 diff --git a/docs/doc/webman.md b/docs/doc/webman.md index f262e62..bceae2a 100644 --- a/docs/doc/webman.md +++ b/docs/doc/webman.md @@ -44,7 +44,7 @@ return config('plugin.workbunny.webman-coroutine.app.enable', false) ? [ ```php // ... - 'event_loop' => \Workbunny\WebmanCoroutine\event_loop(), + 'event_loop' => \Workbunny\WebmanCoroutine\event_loop(), // ... ``` > 注:对于`Utils\Worker`工具包需要`webman-framework`最新版支持`workerClass`参数,详见 https://github.com/walkor/webman-framework/pull/110 diff --git a/docs/doc/workerman.md b/docs/doc/workerman.md index f05a693..7bb12e9 100644 --- a/docs/doc/workerman.md +++ b/docs/doc/workerman.md @@ -10,7 +10,9 @@ ```php \Workerman\Worker::$eventLoopClass = \Workbunny\WebmanCoroutine\event_loop(); ``` - > 注:对于`Utils\Worker`工具包的使用还需要做一些调整,详细参考:[`Utils`说明](https://github.com/workbunny/webman-coroutine/tree/main/docs/doc/utils.md) + > Tips: + > - 对于`Utils\Worker`工具包的使用还需要做一些代码调整,详细参考:[`Utils`说明](https://github.com/workbunny/webman-coroutine/tree/main/docs/doc/utils.md) + > - 其他`Utils`工具可以直接使用 ## 说明