摘要:
调度器 用户级线程和内核级线程 | 特性 | 用户级线程 | 内核级线程 | | | | | | 创建者 | 应用程序 | 内核 | | 操作系统是否感知存在 | 否 | 是 | | 开销成本 | 创建成本低,上下文切换成本低,上下文切换不需要硬件支持 | 创建成本高,上下文切换成本高,上下文切换需 阅读全文
posted @ 2023-02-04 10:30
kohn
阅读(89)
评论(0)
推荐(0)
摘要:
垃圾收集器 Go 语言垃圾收集器的实现原理 | Go 语言设计与实现 1 设计原理 1.1 标记清除 标记清除(Mark-Sweep)算法是最常见的垃圾收集算法,标记清除收集器是跟踪式垃圾收集器,其执行过程可以分成标记(Mark)和清除(Sweep)两个阶段: 标记阶段 — 从根对象出发查找并标记堆 阅读全文
posted @ 2023-02-04 10:30
kohn
阅读(132)
评论(0)
推荐(0)
摘要:
uintptr & unsafe.Pointer unsafe.Pointer 从名字来看它是不安全的和指针相关,unsafer.pointer主要的功能就是不同类型指针间的转换。 func main() { var a *int8 var b *int16 a = new(int8) b = ne 阅读全文
posted @ 2023-02-04 10:26
kohn
阅读(40)
评论(0)
推荐(0)
摘要:
其他场景如何退出协程 1 channel 忘记关闭 事实上除了超时场景,其他使用协程(goroutine)的场景,也很容易因为实现不当,导致协程无法退出,随着时间的积累,造成内存耗尽,程序崩溃。 例如下面的例子: func do(taskCh chan int) { for { select { c 阅读全文
posted @ 2023-02-04 10:26
kohn
阅读(21)
评论(0)
推荐(0)
摘要:
控制协程的并发数量 1 并发过多 一个例子: func main() { var wg sync.WaitGroup for i := 0; i < math.MaxInt32; i++ { wg.Add(1) go func(i int) { defer wg.Done() fmt.Println 阅读全文
posted @ 2023-02-04 10:26
kohn
阅读(56)
评论(0)
推荐(0)
摘要:
互斥锁和自旋锁的区别 两种锁的加锁原理 互斥锁:线程会从sleep ——>running,过程中有上下文的切换,cpu的抢占,信号的发送等开销。 自旋锁:线程一直是running,死循环检测锁的标志位,机制不复杂。 互斥锁属于sleep-waiting类型的锁。例如在一个双核的机器上有两个线程(线程 阅读全文
posted @ 2023-02-04 10:25
kohn
阅读(94)
评论(0)
推荐(0)
摘要:
读写锁与互斥锁 Go 语言标准库 sync 提供了两种锁,互斥锁 sync.Mutex 和读写锁 sync.RWMutex 。 1. 区别 1.1 互斥锁(sync.Mutex) 互斥即不可同时运行。即使用了互斥锁的两个代码片段互相排斥,只有其中一个代码片段执行完成后,另一个才能执行。 Go 标准库 阅读全文
posted @ 2023-02-04 10:25
kohn
阅读(449)
评论(0)
推荐(0)
摘要:
超时场景如何退出协程 1 超时返回时的陷阱 超时控制在网络编程中是非常常见的,利用 context.WithTimeout 和 time.After 都能够很轻易地实现。 1.1 time.After 实现超时控制 func doBadthing(done chan bool) { time.Sle 阅读全文
posted @ 2023-02-04 10:25
kohn
阅读(63)
评论(0)
推荐(0)
摘要:
Lock-free Map 在开始之前,先定义一个概念 Write-Rarely-Read-Many,也就是读多写少。这代表了一个典型的优化并发性能的场景(例如 Linux 内核中的路由表)。我们来实现一个Write-Rarely-Read-Many 场景下的 map。 Lock-based Map 阅读全文
posted @ 2023-02-04 10:25
kohn
阅读(46)
评论(0)
推荐(0)
摘要:
1 Go sync.RWMutex 怎么实现的 sync.RWMutex 是 Go 语言标准库中的一种典型的读写锁(reader-writer lock)实现。 加读锁:先判断是否有 goroutine 持有写锁。如果有持有写锁的 goroutine,那么就休眠当前的读 goroutine;如果没有 阅读全文
posted @ 2023-02-04 10:24
kohn
阅读(20)
评论(0)
推荐(0)