對于共享內(nèi)存是好是壞,我們不能妄下定論,不過學(xué)習(xí)一下總是好的。
不同進(jìn)程之間內(nèi)存空間是獨立的,也就是說進(jìn)程不能訪問也不會干擾其他進(jìn)程的內(nèi)存。如果兩個進(jìn)程希望通過共享內(nèi)存的方式通信呢?可以通過mmap()
系統(tǒng)調(diào)用實現(xiàn)。
Go也實現(xiàn)了mmap()
函數(shù)支持共享內(nèi)存,不過也是通過cgo來調(diào)用C實現(xiàn)的系統(tǒng)調(diào)用函數(shù)。Cgo是什么?它是Go調(diào)用C語言模塊的功能,當(dāng)然這種調(diào)用很可能是平臺相關(guān)的,也就是無法保證在Windows也能正確運行。
具體代碼參見Golang對共享內(nèi)存的操作,有時間我們也愿意寫一個更簡單易懂的例子。