From 99b01b7f782bbca47a144f99c506bf407521436a Mon Sep 17 00:00:00 2001 From: "as2252258@163.com" Date: Thu, 6 Apr 2023 22:15:33 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8F=98=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- kiri-engine/Pool/PoolItem.php | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/kiri-engine/Pool/PoolItem.php b/kiri-engine/Pool/PoolItem.php index 25402ab3..d622e497 100644 --- a/kiri-engine/Pool/PoolItem.php +++ b/kiri-engine/Pool/PoolItem.php @@ -2,6 +2,7 @@ namespace Kiri\Pool; +use Closure; use Kiri\Annotation\Inject; use Kiri\Di\Context; use Swoole\Coroutine\Channel; @@ -11,9 +12,9 @@ class PoolItem /** - * @var PoolQueue + * @var Channel|SplQueue */ - private PoolQueue $_items; + private Channel|SplQueue $_items; /** @@ -24,18 +25,22 @@ class PoolItem /** * @param int $maxCreated - * @param \Closure $callback + * @param Closure $callback */ - public function __construct(readonly public int $maxCreated, readonly public \Closure $callback) + public function __construct(readonly public int $maxCreated, readonly public Closure $callback) { - $this->_items = new PoolQueue($this->maxCreated); + if (Context::inCoroutine()) { + $this->_items = new Channel($this->maxCreated); + } else { + $this->_items = new SplQueue($this->maxCreated); + } } /** - * @param PoolQueue $items + * @param Channel|SplQueue $items */ - public function setItems(PoolQueue $items): void + public function setItems(Channel|SplQueue $items): void { $this->_items = $items; }