Go
文章平均质量分 85
Hcoco_me
一个搞技术的读书人,妄图分享最干货的技术知识与世界运转的底层逻辑。GZH:TrustZone
展开
-
golang面试:golang的GPM调度模型(七)
那就会有个问题,如果一个系统调用或者G任务执行太长,他就会一直占用这个线程,由于本地队列的G任务是顺序执行的,其它G任务就会阻塞了,怎样中止长任务的呢?到这里都差不多了,这些在雨痕的笔记里面都有更详细的描述,不过很多地方比较凌乱,比较复杂,这里筛检了很多,方便读者理解。全局G任务队列会和各个本地G任务队列按照一定的策略互相交换(满了,则把本地队列的一半送给全局队列)全局G任务队列会和各个本地G任务队列按照一定的策略互相交换(满了,则把本地队列的一半送给全局队列)去繁就简,再加上自己的一些理解,整理了一下。原创 2023-08-18 00:41:11 · 78 阅读 · 0 评论 -
golang面试:golang中的context(四)
最近在学协程,看见资料说在复杂的网络高并发环境,channel是难以满足我们的使用要求,需要用到context,以前我也看见这个万一,看来真的很重要,于是就学习两篇很厉害的blog学习一下。golang 中的创建一个新的 goroutine , 并不会返回像c语言类似的pid,所有我们不能从外部杀死某个goroutine,所有我就得让它自己结束,之前我们用 channel + select 的方式,来解决这个问题,但是有些场景实现起来比较麻烦,原创 2023-08-18 00:40:54 · 93 阅读 · 0 评论 -
golang面试:golang并发与多线程(三)
Golang中channel 是被单独创建并且可以在进程之间传递,它的通信模式类似于 boss-worker 模式的,一个实体通过将消息发送到channel 中,然后又监听这个 channel 的实体处理,两个实体之间是匿名的,这个就实现实体中间的解耦,其中 channel 是同步的一个消息被发送到 channel 中,最终是一定要被另外的实体消费掉的,在实现原理上其实类似一个阻塞的消息队列。n,任务1对这些子任务也有自己的超时控制,那么这些子任务既要感知主协程的取消信号,也需要感知任务1的取消信号。原创 2023-08-18 00:40:41 · 102 阅读 · 0 评论 -
golang面试:golang实现原理(二)
一般情况下,如果同一个线程先后两次调用lock,在第二次调用时,由于锁已经被占用,该线程会挂起等待别的线程释放锁,然而锁正是被自己占用着的,该线程又被挂起而没有机会释放锁,因此就永远处于挂起等待状态了,这叫做死锁(Deadlock)。另外一种情况是:若线程A获得了锁1,线程B获得了锁2,这时线程A调用lock试图获得锁2,结果是需要挂起等待线程B释放锁2,而这时线程B也调用lock试图获得锁1,结果是需要挂起等待线程A释放锁1,于是线程A和B都永远处于挂起状态了。一个是只读的锁,一个是写锁。原创 2023-08-10 14:45:43 · 68 阅读 · 1 评论 -
golang面试:golang基础语法(一)
最近忙于面试,就顺便把这个更新到blog上面方便随时查看,有些不对的请留意告知,内容大多数来源前辈的文章,因为当时做笔记也搞忘复制链接了,如果有知道的欢迎补充,我会补上链接。在初始化后长度是固定的,无法修改其长度。接口类型,是一种抽象的类型,它不会暴露它所代表的对象的内部值和对象支持的操作方法。数组是内置(build-in)类型,是一组同类型数据的集合,它是值类型,通过从0开始的下标索引访问元素值。数组的长度是数组类型的一部分,所以[3]int 和 [4]int 是两种不同的数组类型。原创 2023-08-09 23:40:45 · 60 阅读 · 0 评论 -
goang基础知识小全
(这里的原创 2022-10-05 17:30:07 · 993 阅读 · 0 评论