區(qū)別:1、go語(yǔ)言使用單線程eventloop處理IO事件,而swoole使用多線程eventloop處理IO事件;2、golang語(yǔ)言層面支持多線程,而swoole語(yǔ)言層不支持多線程;3、go語(yǔ)言有超全局變量,swoole沒(méi)有超全局變量。
本教程操作環(huán)境:Windows10系統(tǒng)、Swoole4&&GO 1.11.2版、DELL G3電腦
golang 與swoole的區(qū)別
1、關(guān)于語(yǔ)言
golang使用靜態(tài)語(yǔ)言,編寫(xiě)麻煩,單效率高,多用于io密集型計(jì)算
swoole php是動(dòng)態(tài)解釋執(zhí)行的,語(yǔ)言性能較差,不適合密集計(jì)算程序
2、關(guān)于IO
golang使用單線程eventloop處理IO事件,多線程協(xié)程調(diào)度運(yùn)行用戶代碼
swoole使用多線程eventloop處理IO事件,多進(jìn)程執(zhí)行用戶代碼
3、關(guān)于協(xié)程
golang語(yǔ)言層面支持多線程,使用多線程調(diào)度協(xié)程,可以實(shí)現(xiàn)堆棧文件符共享,但是容易造成數(shù)據(jù)干擾在使用時(shí)需要加鎖機(jī)制等
swoole語(yǔ)言層不支持多線程,使用單線程實(shí)現(xiàn)協(xié)程調(diào)度,每個(gè)線程數(shù)據(jù)是單獨(dú)的不存在數(shù)據(jù)干擾。
4、關(guān)于運(yùn)行模式
golang是多線程運(yùn)行,有超全局變量,有數(shù)據(jù)干擾問(wèn)題,可以數(shù)據(jù)共享
swoole是多進(jìn)程運(yùn)行,沒(méi)有超全局變量,只有進(jìn)程級(jí)別的變量,沒(méi)有數(shù)據(jù)干擾問(wèn)題,要自己使用 table等實(shí)現(xiàn)數(shù)據(jù)共享
推薦學(xué)習(xí): swoole教程