鍍金池/ 問答/PHP/ 請問swoole能否使用在同步的業(yè)務邏輯上?

請問swoole能否使用在同步的業(yè)務邏輯上?

swoole的協(xié)程是能達到異步IO的性能,但相比異步IO和多線程來講,swoole協(xié)程是以同步編碼方式來實現(xiàn),而非回調方式。

問題:

如果現(xiàn)在的業(yè)務邏輯是同步的(例如:先查詢Mysql獲取某條記錄的ID,再根據此ID去查詢redis的某條記錄),那么能否使用swoole協(xié)程實現(xiàn)呢?

PS :

據我所知,swoole協(xié)程雖然是同步編碼風格,但是其實是類似異步IO方式并發(fā)執(zhí)行,所以很疑惑同步邏輯能否實現(xiàn)?,異步IO是在回調函數(shù)中又套回調函數(shù),不好理解
回答
編輯回答
陌南塵

可以的,同步的業(yè)務邏輯,異步執(zhí)行的IO是不沖突的。

但是其實是類似異步IO方式并發(fā)執(zhí)行

同一段業(yè)務邏輯里,有數(shù)據依賴的IO是不會并發(fā)執(zhí)行的,但是不同業(yè)務邏輯里沒數(shù)據依賴的IO才會并發(fā)執(zhí)行。

例如:

先查詢Mysql獲取某條記錄的ID,再根據此ID去查詢redis的某條記錄

必須要先查Mysql再查Redis,但是并發(fā)處理多個這樣的請求時,多個Mysql查詢就可以并發(fā),多個Redis也可以并發(fā)。

2018年6月19日 09:29
編輯回答
萌面人

同步代碼會阻塞Worker,得到的好處將只有持久化,而協(xié)程使用的是異步IO,不會阻塞Worker

2018年8月16日 09:59
編輯回答
殘淚

本來就有異步和同步。。普通的就是同步,除非你調異步接口

2017年9月14日 17:30