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