Skip to content

Instantly share code, notes, and snippets.

@IvanAlekseevichPopov
Created December 22, 2017 16:14
Show Gist options
  • Save IvanAlekseevichPopov/56ab0690a4c10fc78ee42c057557b143 to your computer and use it in GitHub Desktop.
Save IvanAlekseevichPopov/56ab0690a4c10fc78ee42c057557b143 to your computer and use it in GitHub Desktop.
sessions example with concurency
package main
import (
"fmt"
"sync"
)
type userSession struct {
sync.Mutex
userID int64
position string //Position in user story
}
func (user *userSession) set(session string) {
sessions.Lock()
defer sessions.Unlock()
user.position = session
}
type Sessions struct {
sync.Mutex
users map[int64]*userSession
}
func (sessions Sessions) set(userID int64, session string) {
sessions.Lock()
defer sessions.Unlock()
sessions.users[userID] = &userSession{userID: userID, position: session}
}
var sessions = Sessions{users: make(map[int64]*userSession)}
func main() {
sessions.set(1, "blabla")
fmt.Println(sessions.users[1].position)
sessions.users[1].set("blablaUpdate")
fmt.Println(sessions.users[1].position)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment