设为首页 加入收藏

TOP

go channel原理及使用场景(三)
2023-07-23 13:29:02 】 浏览:89
Tags:channel
on) bool { timer := time.NewTimer(timeout) select { case <-m.ch: // 成功获取锁关闭定时器 timer.Stop() return true case <-timer.C: } // 获取锁超时 return false } // 是否上锁 func (m *Mutex) IsLocked() bool { return len(m.ch) == 0 } func main() { m := NewMutex() ok := m.TryLock() log.Printf("locked v %v\n", ok) ok = m.TryLock() log.Printf("locked v %v\n", ok) go func() { time.Sleep(5*time.Second) m.Unlock() }() ok = m.LockTimeout(10*time.Second) log.Printf("LockTimeout v %v\n", ok) }

参考:

极刻时间《go 并发编程实战》

首页 上一页 1 2 3 4 5 下一页 尾页 3/5/5
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇分享Go书籍-《Go Web编程》 下一篇Go设计模式学习准备——下载bilib..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目