我的梦想
不是每个人都应该像我这样去建造一座水晶大教堂,但是每个人都应该拥有自己的梦想,设计自己的梦想,追求自己的梦想,实现自己的梦想。梦想是生命的灵魂,是心灵的灯塔,是引导人走向成功的信仰。有了崇高的梦想,只要矢志不渝地追求,梦想就会成为现实,奋斗就会变成壮举,生命就会创造奇迹。——罗伯·舒乐
关于async和await的探讨 关于async和await的探讨
缘起最近在看《深入解析C#(第4版)》这本书,看到了第五章,这一章节是关于异步。之前对异步这个概念只能算是一知半解,了解了它的概念和用法,但是对它的实际场景和为了解决什么问题而诞生的是不太清楚的。于是乎,就和小伙伴之间有了一场讨论。
2021-12-03
Go语言核心36讲-并发安全字典sync.Map (上) Go语言核心36讲-并发安全字典sync.Map (上)
今天再来讲一个并发安全的高级数据结构:sync.Map。众所周知,Go 语言自带的字典类型map并不是并发安全的。
2021-11-30
Go语言核心36讲-context.Context类型 Go语言核心36讲-context.Context类型
使用WaitGroup值的时候,我们最好用“先统一Add,再并发Done,最后Wait”的标准模式来构建协作流程。 如果在调用该值的Wait方法的同时,为了增大其计数器的值,而并发地调用该值的Add方法,那么就很可能会引发 panic。 这
2021-11-29
Go语言核心36讲-临时对象池sync.Pool Go语言核心36讲-临时对象池sync.Pool
sync.Pool类型可以被称为临时对象池,它的值可以被用来存储临时的对象。与 Go 语言的很多同步工具一样,sync.Pool类型也属于结构体类型,它的值在被真正使用之后,就不应该再被复制了。 这里的“临时对象”的意思是:不需要持久使用的
2021-11-29
Go语言核心36讲-sync.WaitGroup和sync.Once Go语言核心36讲-sync.WaitGroup和sync.Once
之前在一些场合下里,我们使用通道的方式看起来都似乎有些蹩脚。 比如:声明一个通道,使它的容量与我们手动启用的 goroutine 的数量相同,之后再利用这个通道,让主 goroutine 等待其他 goroutine 的运行结束。 这一步更
2021-11-26
Go语言核心36讲-panic函数、recover函数以及defer语句(上) Go语言核心36讲-panic函数、recover函数以及defer语句(上)
Go 语言的另外一种错误处理方式,不过,严格来说,它处理的不是错误,而是一场,并且时一种在我们意料之外的程序异常。
2021-11-25
Go语言核心36讲-错误处理(上) Go语言核心36讲-错误处理(上)
error类型其实是一个接口类型,也是一个 Go 语言的内建类型。在这个接口类型的声明中只包含了一个方法Error。Error方法不接受任何参数,但是会返回一个string类型的结果。它的作用是返回错误信息的字符串表示形式。
2021-11-25
Go语言核心36讲-原子操作(上) Go语言核心36讲-原子操作(上)
互斥锁是一个很有用的同步工具,它可以保证每一时刻进入临界区的 goroutine 只有一个。读写锁对共享资源的写操作和读操作则区别看待,并消除了读操作之间的互斥。 条件变量主要是用于协调想要访问共享资源的那些线程。当共享资源的状态发生变化时
2021-11-24
Go语言核心36讲-原子操作(下) Go语言核心36讲-原子操作(下)
今天的问题是:sync/atomic包中提供了几种原子操作?可操作的数据类型又有哪些?问题解析__第三个衍生问题__: 比较并交换操作与交换操作相比有什么不同?优势在哪里? 回答是:比较并交换操作即 CAS 操作,是有条件的交换操作,只有在
2021-11-24
Go语言核心36讲-条件变量sync.Cond(上) Go语言核心36讲-条件变量sync.Cond(上)
前导知识:条件变量与互斥锁我们常常会把条件变量这个同步工具拿来与互斥锁一起讨论。实际上,条件变量是基于互斥锁的,它必须有互斥锁的支撑才能发挥作用。 条件变量并不是被用来保护临界区和共享资源的,它是用于协调想要访问共享资源的那些线程的。当共享
2021-11-24
Go语言核心36讲-条件变量sync.Cond(下) Go语言核心36讲-条件变量sync.Cond(下)
知识扩展问题 1:条件变量的Wait方法做了什么?在了解了条件变量的使用方式之后,你可能会有这么几个疑问。 为什么先要锁定条件变量基于的互斥锁,才能调用它的Wait方法? 为什么要用for语句来包裹调用其Wait方法的表达式,用if语句不
2021-11-24
Go语言核心36讲-sync.Mutex与sync.RWMutex Go语言核心36讲-sync.Mutex与sync.RWMutex
从本篇文章开始,我们将一起探讨 Go 语言自带标准库中一些比较核心的代码包。这会涉及这些代码包的标准用法、使用禁忌、背后原理以及周边的知识。
2021-11-23
1 / 12