This commit is contained in:
2023-04-06 22:15:33 +08:00
parent a5b473956d
commit 99b01b7f78
+12 -7
View File
@@ -2,6 +2,7 @@
namespace Kiri\Pool; namespace Kiri\Pool;
use Closure;
use Kiri\Annotation\Inject; use Kiri\Annotation\Inject;
use Kiri\Di\Context; use Kiri\Di\Context;
use Swoole\Coroutine\Channel; 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 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; $this->_items = $items;
} }