<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></title> 
<link>http://jackxiang.com/index.php</link> 
<description><![CDATA[赢在IT，Playin' with IT,Focus on Killer Application,Marketing Meets Technology.]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></copyright>
<item>
<link>http://jackxiang.com/post//</link>
<title><![CDATA[swoole实现redis连接池CoroutineChannel核心原理。]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[Swoole专题研究]]></category>
<pubDate>Fri, 30 Aug 2019 08:24:43 +0000</pubDate> 
<guid>http://jackxiang.com/post//</guid> 
<description>
<![CDATA[ 
	Channel-&gt;push ：当队列中有其他协程正在等待pop数据时，自动按顺序唤醒一个消费者协程。当队列已满时自动yield让出控制器，等待其他协程消费数据<br/>Channel-&gt;pop：当队列为空时自动yield，等待其他协程生产数据。消费数据后，队列可写入新的数据，自动按顺序唤醒一个生产者协程。<br/>Coroutine&#92;Channel使用本地内存，不同的进程之间内存是隔离的。只能在同一进程的不同协程内进行push和pop操作<br/>Coroutine&#92;Channel在2.0.13或更高版本可用<br/><br/>作者：逸宸a<br/>链接：https://www.jianshu.com/p/ed71cb92050d<br/>来源：简书<br/>简书著作权归作者所有，任何形式的转载都请联系作者获得授权并注明出处。<br/><br/><textarea name="code" class="php" rows="15" cols="100">
cat pooldemo.php 
&lt;?php
use &#92;Swoole&#92;Coroutine&#92;Channel;
$chan = new Channel();
go(function () use ($chan) &#123;
&nbsp;&nbsp;&nbsp;&nbsp;echo &quot;我是第一个协程，等待3秒内有push就执行返回&quot; . PHP_EOL;
&nbsp;&nbsp;&nbsp;&nbsp;$p = $chan-&gt;pop(2);#1
&nbsp;&nbsp;&nbsp;&nbsp;echo &quot;pop返回结果&quot; . PHP_EOL;
&nbsp;&nbsp;&nbsp;&nbsp;var_dump($p);
&#125;);
go(function () use ($chan) &#123;
&nbsp;&nbsp;&nbsp;&nbsp;co::sleep(1);#2
&nbsp;&nbsp;&nbsp;&nbsp;$chan-&gt;push(1);
&#125;);
echo &quot;main&quot; . PHP_EOL;





1处代码会首先执行，然后遇到pop(),因为channel还是空，会等待2s。此时协程会让出cpu,跳到第二个协程执行，然后#2出睡眠1秒，push变量1进去channel后返回#1处继续执行，成功取车通过中刚push的值1.运行结果为：
我是第一个协程，等待3秒内有push就执行返回
main
pop返回结果
/data/www/xiangdong.coro.swoole.com.cn/pooldemo.php:8:
int(1)

设置超过2秒的情况：
如果把#2处的睡眠时间换成大于pop()的等待时间，结果是：#php pooldemo.php 
我是第一个协程，等待3秒内有push就执行返回
main
pop返回结果
/data/www/xiangdong.coro.swoole.com.cn/pooldemo.php:8:
bool(false)
</textarea><br/><br/>来自：https://www.jianshu.com/p/ed71cb92050d<br/>https://www.jianshu.com/p/ed71cb92050d
]]>
</description>
</item><item>
<link>http://jackxiang.com/post//#blogcomment</link>
<title><![CDATA[[评论] swoole实现redis连接池CoroutineChannel核心原理。]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>http://jackxiang.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>