Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 4593ccc

Browse files
committed
lock
1 parent c2a94a2 commit 4593ccc

File tree

2 files changed

+10
-2
lines changed

2 files changed

+10
-2
lines changed

websites/code2/studygolang/src/logic/book.go

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -153,15 +153,20 @@ func (this *book) Len() int {
153153

154154
// 给某个用户发送一条消息
155155
func (this *book) PostMessage(uid int, message *Message) {
156+
this.rwMutex.RLock()
157+
defer this.rwMutex.RUnlock()
156158
if userData, ok := this.users[uid]; ok {
157159
logger.Infoln("post message to", uid, message)
158-
userData.SendMessage(message)
160+
go userData.SendMessage(message)
159161
}
160162
}
161163

162164
// 给所有用户广播消息
163165
func (this *book) BroadcastAllUsersMessage(message *Message) {
164166
logger.Infoln("BroadcastAllUsersMessage message", message)
167+
168+
this.rwMutex.RLock()
169+
defer this.rwMutex.RUnlock()
165170
for _, userData := range this.users {
166171
userData.SendMessage(message)
167172
}
@@ -170,6 +175,9 @@ func (this *book) BroadcastAllUsersMessage(message *Message) {
170175
// 给除了自己的其他用户广播消息
171176
func (this *book) BroadcastToOthersMessage(message *Message, myself int) {
172177
logger.Infoln("BroadcastToOthersMessage message", message)
178+
179+
this.rwMutex.RLock()
180+
defer this.rwMutex.RUnlock()
173181
for uid, userData := range this.users {
174182
if uid == myself {
175183
continue

websites/code2/studygolang/src/vendor/manifest

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -215,7 +215,7 @@
215215
{
216216
"importpath": "github.com/polaris1119/middleware",
217217
"repository": "https://github.com/polaris1119/middleware",
218-
"revision": "f17141979ae085ca77015f1e3e276039d7c6cfd7",
218+
"revision": "115eb7d414d2fe3eb092aedd57b4dcd1c9966fe3",
219219
"branch": "master"
220220
},
221221
{

0 commit comments

Comments
 (0)