Go
Pennhhe
对时间有耐心
展开
-
Mutex 四大易错场景
Mutex 四大易错场景1. Lock / Unlock 没有成对出现func foo(){ var mu sync.Mutex defer mu.Unlock() fmt.Println("hello World!")}2. Copy 已经使用的MutexMutex 是一个有状态的变量,复制了一个已经加锁的变量的话, 新的变量其实已经加锁了。package mainimport ( "fmt" "sync")type Counter struct { sync.M原创 2020-12-23 17:24:02 · 479 阅读 · 0 评论 -
Mutex 的使用
Mutex 的使用1. 互斥锁的实现机制1.1 临界区为了避免并发访问导致的意外,被保护起来的程序叫做临界区。1.2 互斥锁保证临界区只能同时被一个线程持有。1.3 互斥锁的原理临界区被一个线程持有的时候,其他想进入临界区的线程会返回失败,或者等待。直到持有的线程退出临界区。1.4 同步元语的使用场景共享资源。并发地读写共享资源。任务编排。互相等待或有依赖的线程。消息传递。不同线程之间传递消息。2. Mutex 的基本使用方法2.1 示例代码package main原创 2020-12-23 17:18:14 · 711 阅读 · 0 评论 -
Go 语言从入门到精通
Go 语言从入门到精通Go 语言是一门开源语言,能够轻松的构建简单,可靠,高效的软件。—— Golang在很多语言中,解决给定的问题通常有多种方式。工程师需要花费大量的时间思考什么才是解决问题的最优解法。而在Golang中,问题的解法通常只有一种。这一特性大大节约了工程师的时间,而且使得维护大型代码库变得更容易。在Golang中没有maps和filter这样高消耗的特性。语言的特性...翻译 2019-07-16 17:11:00 · 1288 阅读 · 0 评论