forked from mirror/ledisdb
use goroutine for reap handling
This commit is contained in:
parent
8133cfdbb7
commit
fcc8c9ae37
|
@ -64,7 +64,7 @@ type client struct {
|
||||||
|
|
||||||
lastLogID uint64
|
lastLogID uint64
|
||||||
|
|
||||||
reqErr chan error
|
// reqErr chan error
|
||||||
|
|
||||||
buf bytes.Buffer
|
buf bytes.Buffer
|
||||||
|
|
||||||
|
@ -82,7 +82,7 @@ func newClient(app *App) *client {
|
||||||
c.ldb = app.ldb
|
c.ldb = app.ldb
|
||||||
c.db, _ = app.ldb.Select(0) //use default db
|
c.db, _ = app.ldb.Select(0) //use default db
|
||||||
|
|
||||||
c.reqErr = make(chan error)
|
// c.reqErr = make(chan error)
|
||||||
|
|
||||||
return c
|
return c
|
||||||
}
|
}
|
||||||
|
|
|
@ -77,26 +77,31 @@ func (c *respClient) run() {
|
||||||
c.app.removeSlave(c.client, handleQuit)
|
c.app.removeSlave(c.client, handleQuit)
|
||||||
}()
|
}()
|
||||||
|
|
||||||
// done := make(chan error)
|
done := make(chan error)
|
||||||
for {
|
for {
|
||||||
// go func() {
|
// I still don't know why use goroutine can improve performance
|
||||||
|
// if someone knows and benchamrks with another different result without goroutine, please tell me
|
||||||
|
go func() {
|
||||||
reqData, err := c.readRequest()
|
reqData, err := c.readRequest()
|
||||||
if err != nil {
|
if err == nil {
|
||||||
// done <- err
|
c.handleRequest(reqData)
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
c.handleRequest(reqData)
|
done <- nil
|
||||||
// done <- nil
|
}()
|
||||||
// }()
|
|
||||||
|
|
||||||
// err := <-done
|
// reqData, err := c.readRequest()
|
||||||
// if err != nil {
|
// if err == nil {
|
||||||
// return
|
// c.handleRequest(reqData)
|
||||||
// }
|
|
||||||
// if c.conn == nil {
|
|
||||||
// return
|
|
||||||
// }
|
// }
|
||||||
|
|
||||||
|
err := <-done
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if c.conn == nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue