usa channels diversi per ogni thread
This commit is contained in:
parent
19d6b22de6
commit
a84acd14ca
5 changed files with 74 additions and 53 deletions
33
producer.go
33
producer.go
|
@ -13,27 +13,27 @@ type produced struct {
|
|||
logins []string
|
||||
}
|
||||
|
||||
func producer(consume chan produced, done chan bool) {
|
||||
func producer(id int) {
|
||||
conn := dbs.rdb.Get()
|
||||
defer conn.Close()
|
||||
|
||||
for loop {
|
||||
for loop[id] {
|
||||
|
||||
start := time.Now()
|
||||
// estrae un userid dalla lista degli utenti che hanno fatto login
|
||||
user, err := redis.String(conn.Do("spop", "llindex"))
|
||||
if opts.Debug {
|
||||
log.Printf("SPOP: %+v - %+v\n\r", user, err)
|
||||
fmt.Printf("SPOP: %+v - %+v\n\r", user, err)
|
||||
}
|
||||
// if opts.Debug {
|
||||
// log.Printf("SPOP: %+v - %+v\n\r", user, err)
|
||||
// fmt.Printf("SPOP: %+v - %+v\n\r", user, err)
|
||||
// }
|
||||
// se non ci sono piu' userid esce
|
||||
if err != nil {
|
||||
if opts.Debug {
|
||||
log.Printf("LLINDEX empty: %v\n\r", err)
|
||||
fmt.Printf("LLINDEX empty: %v\n\r", err)
|
||||
}
|
||||
loop = false
|
||||
done <- true
|
||||
//loop[id] = false
|
||||
done[id] <- true
|
||||
break
|
||||
}
|
||||
|
||||
|
@ -43,16 +43,21 @@ func producer(consume chan produced, done chan bool) {
|
|||
fmt.Printf("LRANGE: %+v - %+v\n\r", err, logs)
|
||||
log.Printf("LRANGE: %+v - %+v\n\r", err, logs)
|
||||
}
|
||||
if opts.Debug {
|
||||
fmt.Printf("LRANGE: %s - %d\n\r", user, len(logs))
|
||||
log.Printf("LRANGE: %s - %d\n\r", user, len(logs))
|
||||
}
|
||||
// if opts.Debug {
|
||||
// fmt.Printf("LRANGE: %s - %d\n\r", user, len(logs))
|
||||
// log.Printf("LRANGE: %s - %d\n\r", user, len(logs))
|
||||
// }
|
||||
|
||||
if opts.Debug {
|
||||
fmt.Printf("PROD: user=%s in %v - conn=%d\n\r", user, time.Since(start), dbs.rdb.ActiveCount())
|
||||
fmt.Printf("PROD (%d): user=%s login=%d in %v - conn=%d\n\r", id, user, len(logs), time.Since(start), dbs.rdb.ActiveCount())
|
||||
log.Printf("PROD (%d): user=%s login=%d in %v - conn=%d\n\r", id, user, len(logs), time.Since(start), dbs.rdb.ActiveCount())
|
||||
}
|
||||
|
||||
consume <- produced{
|
||||
count.AddUser()
|
||||
wg.Add(1)
|
||||
count.AddWG(id)
|
||||
|
||||
consume[id] <- produced{
|
||||
user: user,
|
||||
logins: logs,
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue