IT书架 本次搜索耗时 0.123 秒,为您找到 1075 个相关结果.
  • 4.Go channel为什么是线程安全的?

    4.Go channel为什么是线程安全的? 为什么设计成线程安全? 如何实现线程安全的? 4.Go channel为什么是线程安全的? 为什么设计成线程安全? 不同协程通过channel进行通信,本身的使用场景就是多线程,为了保证数据的一致性,必须实现线程安全 如何实现线程安全的? channel的底层实现中,hchan结构体中采用M...
  • 3.Go goroutine泄露的场景?

    3.Go goroutine泄露的场景? 泄露原因 泄露场景 如何排查 3.Go goroutine泄露的场景? 泄露原因 Goroutine 内进行channel/mutex 等读写操作被一直阻塞。 Goroutine 内的业务逻辑进入死循环,资源一直无法释放。 Goroutine 内的业务逻辑进入长时间等待,有不断新增的 Gorout...
  • 5.Go map冲突的解决方式?

    5.Go map冲突的解决方式? 5.Go map冲突的解决方式? 比较常用的Hash冲突解决方案有链地址法和开放寻址法: 链地址法 当哈希冲突发生时,创建新单元 ,并将新单元添加到冲突单元所在链表的尾部。 开放寻址法 当哈希冲突发生时,从发生冲突的那个单元 起,按照一定的次序,从哈希表中寻找一个空闲的单元,然后把发生冲突的元素存入到该单...
  • 2.Go 互斥锁正常模式和饥饿模式的区别?

    2.Go 互斥锁正常模式和饥饿模式的区别? 正常模式(非公平锁) 饥饿模式(公平锁) 总结 2.Go 互斥锁正常模式和饥饿模式的区别? 在Go一共可以分为两种抢锁的模式,一种是正常模式 ,另外一种是饥饿模式 。 正常模式(非公平锁) 在刚开始的时候,是处于正常模式(Barging),也就是,当一个G1持有着一个锁的时候,G2会自旋的去尝试...
  • 并发编程

    1.Go 常用的并发模型? 2.Go 有哪些并发同步原语? 3.Go WaitGroup实现原理? 4. Go Cond实现原理? 5. Go 有哪些方式安全读写共享变量? 6. Go 如何排查数据竞争问题?
  • 6.Go channel共享内存有什么优劣势?

    6.Go channel共享内存有什么优劣势? 6.Go channel共享内存有什么优劣势? “不要通过共享内存来通信,我们应该使用通信来共享内存” 这句话想必大家已经非常熟悉了,在官方的博客,初学时的教程,甚至是在 Go 的源码中都能看到 无论是通过共享内存来通信还是通过通信来共享内存,最终我们应用程序都是读取的内存当中的数据,只是前者是直接...
  • 7.Go channel发送和接收什么情况下会死锁?

    7.Go channel发送和接收什么情况下会死锁? 7.Go channel发送和接收什么情况下会死锁? 死锁: 单个协程永久阻塞 两个或两个以上的协程的执行过程中,由于竞争资源或由于彼此通信而造成的一种阻塞的现象。 channel死锁场景: 非缓存channel只写不读 非缓存channel读在写后面 缓存channel写入超过缓冲...
  • 6.Go 如何查看GC信息?

    1. GODEBUG=’gctrace=1’ 2. go tool trace 3. debug.ReadGCStats 4. runtime.ReadMemStats 6.Go 如何查看GC信息? 1. GODEBUG=’gctrace=1’ package main func main () { for n :...
  • 7.Go 原子操作和锁的区别?

    7.Go 原子操作和锁的区别? 7.Go 原子操作和锁的区别? 原子操作由底层硬件支持,而锁是基于原子操作+信号量完成的。若实现相同的功能,前者通常会更有效率 原子操作是单个指令的互斥操作;互斥锁/读写锁是一种数据结构,可以完成临界区(多个指令)的互斥操作,扩大原子操作的范围 原子操作是无锁操作,属于乐观锁;说起锁的时候,一般属于悲观锁 原子操作存...
  • 4.Go work stealing 机制?

    4.Go work stealing 机制? 概念 窃取流程 选择要窃取的P 从P中偷走一半G 4.Go work stealing 机制? 概念 当线程M⽆可运⾏的G时,尝试从其他M绑定的P偷取G,减少空转,提高了线程利用率(避免闲着不干活)。 当从本线程绑定 P 本地 队列、全局G队列、netpoller都找不到可执行的 g,会...