随笔分类 - Golang
摘要:前言 pprof是一个非常强大的golang性能调优工具,在win10环境下使用其web可视化功能时可能会出现问题,这里记录下解决方案。 问题 当我们输入web后应该会弹出web可使界面,但是如果没有安装过gvedit会报错: Failed to execute dot. Is Graphviz i
阅读全文
摘要:调度器的设计策略 复用线程:避免频繁的创建、销毁线程 work stealing 当本线程无可运行的G时,尝试从其他线程绑定的P偷取G,而不是销毁线程 hand off 当本线程因为G进行系统调用阻塞时,线程释放绑定的P,把P转移给其他空闲的线程执行 利用并行 GOMAXPROCS 抢占 Go中,一
阅读全文
摘要:调度器的由来 单进程时代的问题 单一执行流程,计算机只能一个任务一个任务处理 进程阻塞所带来的CPU时间浪费 多进程、多线程的问题 设计变得复杂 进程/线程的数量越多,切换成本就越大 多线程伴随着同步竞争(锁、资源冲突等) 多进程、多线程的壁垒 高内存占用 高CPU调度消耗 协程的问题 N:1 无法
阅读全文
摘要:问题 在爬虫项目中,有一步开启了goroutine,并且内部使用了循环变量 /* ... */ for _, item := range result.Items { go func() { e.ItemChan <-item }() } /* ... */ 我希望能够按照循环输出不同的item,但
阅读全文