Golang实践经验和教训(11)

func (timeout *TimeoutHandler) Register() chan struct{ {

cancelChan := make(chan struct{)

go func () {

select {

case _ = <- cancelChan:

return

case _ = <- time.AfterFunc(time.Duration(timeout.duration) * time.Second):

func () {

stateLock.Lock()

defer stateLock.Unlock()

timeout.callback(timeout.session)

()

()

return cancelChan

func (timeout* TimeoutHandler) Cancel() {

推荐阅读