协程中使用Swoole\Coroutine\MySQL,数据库操作时没有让出协程,如何解决?

我在做一个小模块,用到了两个协程。
一个协程大概的功能就是从队列里取出一些数据,然后根据取到的数据组装成sql,将组装后的sql,压入到协程的chan通道中。
另一个协程从通道中取出sql,并执行,执行sql的时候使用 SwooleCoroutineMySQL 库的query。
我的设想是 SwooleCoroutineMySQL 在query的时候会占用比较多等待时间,在这个等待mysql响应的时候,把下一个需要组装的数据组装好,装入通道,这样可以减少整体的时间占用。
但是结果没有达到我的预期,我的程序还是同步执行,在执行sql的时候,协程并没有让出,而且处于阻塞状态。

是我理解的有问题吗?还是有什么我没注意的地方??

下面是我代码大致的摘抄,并不是实际运行的代码,仅仅用来表述逻辑。

https://img2.mukewang.com/5c8f9a3d000175db07090519.jpg

小唯快跑啊
浏览 1821回答 2
2回答

青春有我

我尝试了 setDefer 机制 ,似乎也没起效。代码实例如下,还是老样子,这里只是一个demo
打开App,查看更多内容
随时随地看视频慕课网APP