
go
普通网友
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
golang “不要通过共享内存来通信,要通过通信来共享内存“
不要通过共享内存来通信,要通过通信来共享内存 使用共享内存的话在多线程的场景下为了处理竞态,需要加锁,使用起来比较麻烦。另外使用过多的锁,容易使得程序的代码逻辑坚涩难懂,并且容易使程序死锁,死锁了以后排查问题相当困难,特别是很多锁同时存在的时候。 go语言的channel保证同一个时间只有一个goroutine能够访问里面的数据,为开发者提供了一种优雅简单的工具,所以go原生的做法就是使用channle来通信,而不是使用共享内存来通信。 ...原创 2021-01-11 16:25:31 · 838 阅读 · 0 评论 -
go的调度问题
go的调度 线程和协程的区别,线程是内核态的,而协程是用户态。线程之间的切换主要由内核去调度,而协程之间的切换则需要用户去操作。线程切换需要保存上下文信息,切换到另一个线程,过段时间,恢复到之前的线程继续执行。cpu时间片的让渡,上下文的保存等等复杂操作都是由内核实现的,操作员不需要关注其中的细节。对操作员更加友好。但是为了支持这些操作,线程需要使用大量的资源。所以一个进程之间只能支持少量的线程,一般几个,十几个就会将资源耗尽。而协程则不同,它将协程之间的调度交给操作员去处理,优秀的操作员可以通过各.原创 2021-01-11 16:23:32 · 194 阅读 · 0 评论 -
面向对象语言------------------------反射机制
在运行状态中,对于任意一个类,都能够获取到这个类的所有属性和方法。对于任意一个对象,都能够调用它的任意一个方法和属性(包括私有的方法和属性)。这种动态获取的信息以及动态调用对象的方法的功能就称为语言的反射机制。通过反射,该类对我们来说是完全透明的,想要获取任何该类方法属性都是可以的。 ...原创 2019-10-28 15:27:50 · 167 阅读 · 0 评论