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

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

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

問題:

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

PS :

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

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

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

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

例如:

先查詢Mysql獲取某條記錄的ID,再根據(jù)此ID去查詢r(jià)edis的某條記錄

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

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

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

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

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

2017年9月14日 17:30