第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

單獨(dú)一個(gè)websocket為什么會(huì)有線(xiàn)程安全問(wèn)題?當(dāng)有多個(gè)websocket連接的時(shí)候那個(gè)inchan和outchan是大家共用一個(gè)還是每人一個(gè)?

type Connection struct {

conn ? ?*websocket.Conn

inChan ?chan *Message

outChan chan *Message


mutex ? ? sync.Mutex

closeChan chan byte

}



正在回答

2 回答

1、一個(gè)連接建立后,3個(gè)協(xié)成是同一個(gè)結(jié)構(gòu)體變量的方法,該結(jié)構(gòu)體中的屬性在3個(gè)協(xié)成中可見(jiàn)可操作。因?yàn)榻Y(jié)構(gòu)體的方法是引用傳值【func (wsConn *wsConnection)】

2、不是共用的,每個(gè)連接都是創(chuàng)建了一個(gè)局部結(jié)構(gòu)體變量保存數(shù)據(jù)和方法調(diào)用。連接間沒(méi)有共用數(shù)據(jù)。

希望小魚(yú)兒老師看看我理解的是否有偏差呢

作者的程序是服務(wù)端啟動(dòng)后,就會(huì)監(jiān)聽(tīng)一個(gè)端口等待客戶(hù)端連接,每來(lái)一個(gè)客戶(hù)端就會(huì)在wsHandler處理函數(shù)中

建立連接。并使用局部結(jié)構(gòu)體變量wsConn包含了連接和讀寫(xiě)管道,讀寫(xiě)管道和這個(gè)通信長(zhǎng)連接都在這個(gè)局部結(jié)構(gòu)體變量中,啟動(dòng)的處理、讀、寫(xiě)協(xié)成都是調(diào)用的該結(jié)構(gòu)體方法。且需引用傳值,保證操作的是同一個(gè)地址空間,同一個(gè)結(jié)構(gòu)體變量。

打開(kāi)多個(gè)客戶(hù)端網(wǎng)頁(yè),會(huì)產(chǎn)生多個(gè)連接,每個(gè)連接對(duì)應(yīng)自己的客戶(hù)端。每個(gè)連接的處理都在自己的結(jié)構(gòu)體方法中完成。從客戶(hù)端發(fā)送消息,服務(wù)端讀到什么再發(fā)回給對(duì)應(yīng)客戶(hù)端,不會(huì)跑到別的客戶(hù)端網(wǎng)頁(yè)上。

如果服務(wù)端想給所有客戶(hù)端群發(fā)消息,可以將wsConn局部變量保存在一個(gè)全局?jǐn)?shù)組中或者redis等存儲(chǔ)介質(zhì)中,

遍歷所有連接發(fā)送數(shù)據(jù)。

如果將讀 寫(xiě)管道換成全局變量,某個(gè)客戶(hù)端發(fā)送數(shù)據(jù)被對(duì)應(yīng)連接協(xié)成放入到inchan管道后,會(huì)隨機(jī)被某個(gè)連接的協(xié)成讀取并放入全局outchan管道中,再被該連接的協(xié)成從outchan管道取走發(fā)送給該連接對(duì)應(yīng)客戶(hù)端。


0 回復(fù) 有任何疑惑可以回復(fù)我~

個(gè)人理解

原來(lái)的websocket的話(huà),每來(lái)一個(gè)請(qǐng)求都會(huì)調(diào)用同一個(gè)conn對(duì)象writeMessage應(yīng)答,此時(shí)會(huì)競(jìng)爭(zhēng)寫(xiě)writeMessage發(fā)消息的緩沖區(qū)內(nèi)容。就會(huì)有線(xiàn)程安全問(wèn)題

第二個(gè)問(wèn)題的話(huà)。共用一個(gè)。因?yàn)橛胏hannel的話(huà),確保每次我只處理一個(gè)消息(channel相當(dāng)于一個(gè)管道,一個(gè)個(gè)投遞數(shù)據(jù),一個(gè)個(gè)處理)

0 回復(fù) 有任何疑惑可以回復(fù)我~

舉報(bào)

0/150
提交
取消

單獨(dú)一個(gè)websocket為什么會(huì)有線(xiàn)程安全問(wèn)題?當(dāng)有多個(gè)websocket連接的時(shí)候那個(gè)inchan和outchan是大家共用一個(gè)還是每人一個(gè)?

我要回答 關(guān)注問(wèn)題
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)