午夜剧场伦理_日本一道高清_国产又黄又硬_91黄色网战_女同久久另类69精品国产_妹妹的朋友在线

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

java - 如何理解“不要通過(guò)共享內(nèi)存來(lái)通信,而應(yīng)該通過(guò)通信來(lái)共享內(nèi)存”?

瀏覽:222日期:2024-01-05 15:34:18

問(wèn)題描述

不要通過(guò)共享內(nèi)存來(lái)通信,而應(yīng)該通過(guò)通信來(lái)共享內(nèi)存

這是一句風(fēng)靡golang社區(qū)的經(jīng)典語(yǔ),對(duì)于剛接觸并發(fā)編程的人,該如何理解這句話?

問(wèn)題解答

回答1:

https://blog.golang.org/share...

這篇文章里面說(shuō)的比較清楚了,使用共享內(nèi)存的話在多線程的場(chǎng)景下為了處理競(jìng)態(tài),需要加鎖,使用起來(lái)比較麻煩。另外使用過(guò)多的鎖,容易使得程序的代碼邏輯堅(jiān)澀難懂,并且容易使程序死鎖,死鎖了以后排查問(wèn)題相當(dāng)困難,特別是很多鎖同時(shí)存在的時(shí)候。

go語(yǔ)言的channel保證同一個(gè)時(shí)間只有一個(gè)goroutine能夠訪問(wèn)里面的數(shù)據(jù),為開(kāi)發(fā)者提供了一種優(yōu)雅簡(jiǎn)單的工具,所以go原生的做法就是使用channle來(lái)通信,而不是使用共享內(nèi)存來(lái)通信。

回答2:

我認(rèn)為前者的意思是大家都維護(hù)一個(gè)狀態(tài),后者是每個(gè)人都維護(hù)一份狀態(tài)副本。

回答3:

共享內(nèi)存會(huì)涉及到多個(gè)線程同時(shí)訪問(wèn)修改數(shù)據(jù)的情況,那得保證數(shù)據(jù)的安全性,可見(jiàn)性,那就會(huì)加鎖,加鎖會(huì)讓并行變?yōu)榇校琧pu也忙于線程搶鎖。不如換一種方式,把數(shù)據(jù)復(fù)制一份,每個(gè)線程有自己的,只要一個(gè)線程干完一件事其他線程不用去搶鎖了,這就是一種通信方式,把共享的以通知方式交給線程,實(shí)現(xiàn)并發(fā)

回答4:

其實(shí)如果從分布式的角度來(lái)理解,就會(huì)比較明了了。

打比方,ab兩個(gè)進(jìn)程共同對(duì)同一個(gè)消息隊(duì)列進(jìn)行操作,那么,如果使用共享內(nèi)存的話,是不是這兩個(gè)進(jìn)程就必須局限在同一個(gè)物理機(jī)上,那么通信的意義就大大縮小了。

如果在設(shè)計(jì)的時(shí)候,對(duì)于消息隊(duì)列,只提供讀寫(xiě)接口,而對(duì)于內(nèi)部的實(shí)現(xiàn)你完全不用去在意,看起來(lái)消息隊(duì)列就像是共享內(nèi)存一樣了。然而你的消息隊(duì)列可以利用socket進(jìn)行通信。

所以,上述這句話,不要用共享內(nèi)存實(shí)現(xiàn)通信是指不要讓程序一開(kāi)始就局限在單機(jī)上,而是利用通信,也就是封裝內(nèi)部實(shí)現(xiàn),提供接口的方式來(lái)進(jìn)行相應(yīng)的操作

標(biāo)簽: java
主站蜘蛛池模板: 韩日精品视频 | 黄视频免费看在线 | av播播| 四虎影院最新网址 | 日本日韩欧美 | 色综合天天综合综合国产 | www四虎com| 成人黄色网址在线观看 | 欧美jizz| 自拍在线观看 | 中文字幕1区2区 | 老牛嫩草二区三区观影体验 | 免费看黄网站在线观看 | 国产成人在线免费 | 久久在线免费观看 | 国产极品少妇 | 国产精品久久久久久久免费 | 亚洲综合色av | 成人一区二区三区视频 | 一区二区精品国产 | 成人激情视频在线播放 | 国产成人a∨ | 男人懂得网站 | a视频在线播放 | 久久久久久久久成人 | 久久久成人免费视频 | 久久精品成人 | 欧洲精品视频在线 | 国产一级黄 | 国产精品77 | 成人黄色免费看 | 欧美黄色一级 | 九色视频在线播放 | 免费在线黄色网址 | 一区二区三区免费 | 国产无遮挡又黄又爽免费网站 | a级片久久| 天天综合永久 | 午夜久久久久久久久 | 狠狠的操 | 国产精选自拍 |