usa channels diversi per ogni thread

This commit is contained in:
Miki 2015-11-23 17:39:17 +01:00
parent 19d6b22de6
commit a84acd14ca
5 changed files with 74 additions and 53 deletions

View file

@ -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,
}