|
|
|
@ -1,40 +1,40 @@
|
|
|
|
|
package main
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"log"
|
|
|
|
|
"sync"
|
|
|
|
|
"time"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
type safeCounter struct {
|
|
|
|
|
v map[int]int
|
|
|
|
|
mux sync.Mutex
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (c *safeCounter) inc(key int) {
|
|
|
|
|
c.mux.Lock()
|
|
|
|
|
c.v[key]++
|
|
|
|
|
c.mux.Unlock()
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// func (c *safeCounter) val(key int) int {
|
|
|
|
|
// c.mux.Lock()
|
|
|
|
|
// defer c.mux.Unlock()
|
|
|
|
|
// return c.v[key]
|
|
|
|
|
// import (
|
|
|
|
|
// "log"
|
|
|
|
|
// "sync"
|
|
|
|
|
// "time"
|
|
|
|
|
// )
|
|
|
|
|
//
|
|
|
|
|
// type safeCounter struct {
|
|
|
|
|
// v map[int]int
|
|
|
|
|
// mux sync.Mutex
|
|
|
|
|
// }
|
|
|
|
|
//
|
|
|
|
|
// func (c *safeCounter) reset(key int) int {
|
|
|
|
|
// func (c *safeCounter) inc(key int) {
|
|
|
|
|
// c.mux.Lock()
|
|
|
|
|
// defer c.mux.Unlock()
|
|
|
|
|
// result := c.v[key]
|
|
|
|
|
// c.v[key] = 0
|
|
|
|
|
// return result
|
|
|
|
|
// c.v[key]++
|
|
|
|
|
// c.mux.Unlock()
|
|
|
|
|
// }
|
|
|
|
|
//
|
|
|
|
|
// // func (c *safeCounter) val(key int) int {
|
|
|
|
|
// // c.mux.Lock()
|
|
|
|
|
// // defer c.mux.Unlock()
|
|
|
|
|
// // return c.v[key]
|
|
|
|
|
// // }
|
|
|
|
|
// //
|
|
|
|
|
// // func (c *safeCounter) reset(key int) int {
|
|
|
|
|
// // c.mux.Lock()
|
|
|
|
|
// // defer c.mux.Unlock()
|
|
|
|
|
// // result := c.v[key]
|
|
|
|
|
// // c.v[key] = 0
|
|
|
|
|
// // return result
|
|
|
|
|
// // }
|
|
|
|
|
//
|
|
|
|
|
// var queriesPerMinute safeCounter
|
|
|
|
|
//
|
|
|
|
|
// func printStat() {
|
|
|
|
|
// _, min, _ := time.Now().Clock()
|
|
|
|
|
// queriesPerMinute.inc(min)
|
|
|
|
|
// log.Printf("Processed %d requests\n", min)
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
var queriesPerMinute safeCounter
|
|
|
|
|
|
|
|
|
|
func printStat() {
|
|
|
|
|
_, min, _ := time.Now().Clock()
|
|
|
|
|
queriesPerMinute.inc(min)
|
|
|
|
|
log.Printf("Processed %d requests\n", min)
|
|
|
|
|
}
|
|
|
|
|