请问swoole能否使用在同步的业务逻辑上?

swoole的协程是能达到异步IO的性能,但相比异步IO和多线程来讲,swoole协程是以同步编码方式来实现,而非回调方式。

问题:

如果现在的业务逻辑是同步的(例如:先查询Mysql获取某条记录的ID,再根据此ID去查询redis的某条记录),那么能否使用swoole协程实现呢?

PS :

据我所知,swoole协程虽然是同步编码风格,但是其实是类似异步IO方式并发执行,所以很疑惑同步逻辑能否实现?,异步IO是在回调函数中又套回调函数,不好理解
阅读 2.6k
3 个回答

可以的,同步的业务逻辑,异步执行的IO是不冲突的。

但是其实是类似异步IO方式并发执行

同一段业务逻辑里,有数据依赖的IO是不会并发执行的,但是不同业务逻辑里没数据依赖的IO才会并发执行。

例如:

先查询Mysql获取某条记录的ID,再根据此ID去查询redis的某条记录

必须要先查Mysql再查Redis,但是并发处理多个这样的请求时,多个Mysql查询就可以并发,多个Redis也可以并发。

本来就有异步和同步。。普通的就是同步,除非你调异步接口

同步代码会阻塞Worker,得到的好处将只有持久化,而协程使用的是异步IO,不会阻塞Worker

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题