2015年5月17日

go语言调度器

摘要: 调度器就是将goroutine分配到工作线程中运行涉及3种类型的对象:G - goroutineM - 工作线程即os线程P - 处理器,一种用来运行go代码的抽象资源,最大数目不能超过GOMAXPROCS,在运行go代码时需要关联一个M全局的运行队列: G *runtime·sched.ru... 阅读全文

posted @ 2015-05-17 14:29 richmonkey 阅读(797) 评论(0) 推荐(1) 编辑

go的协程

摘要: goroutine代表一个调度单位创建一个G的过程: // Create a new g running fn with narg bytes of arguments starting // at argp and returning nret bytes of results. c... 阅读全文

posted @ 2015-05-17 14:28 richmonkey 阅读(668) 评论(0) 推荐(0) 编辑

go语言的动态内存

摘要: go语言动态内存的申请和释放设计来自于tcmalloc主要数据结构:MHeap:the malloc heap,管理pageMCentral:特定类型小对象共享的free listMCache:线程本地小对象的共享free list##分配小对象1. 查找MCache相应大小的free list,如... 阅读全文

posted @ 2015-05-17 14:28 richmonkey 阅读(657) 评论(0) 推荐(0) 编辑

go语言的GC

摘要: mark&sweep, 2分钟保证至少一次GC过程,如果分配的总内存超过上次分配的总内存一定比例(默认100%)后进行一次GC进行mark的过程中,会停止一切G的运行,mark的过程是多任务并发的sweep的过程是分散的##mark过程整个程序内存块包括 .data, .bss, 每个G的stack... 阅读全文

posted @ 2015-05-17 14:28 richmonkey 阅读(601) 评论(0) 推荐(0) 编辑

go语言的chan

摘要: chan是一个FIFO队列,chan分成两种类型同步和异步同步的chan完成发送者和接受者之间手递手传递元素的过程,必须要求对方的存在才能完成一次发送或接受异步的chan发送和接受都是基于chan的缓存,但当缓存队列填满后,发送者就会进入发送队列, 当缓存队列为空时,接受者就会接入等待队列。chan... 阅读全文

posted @ 2015-05-17 14:24 richmonkey 阅读(987) 评论(0) 推荐(0) 编辑

go语言的hashmap

摘要: go语言中map的数据结构,以下只摘取了关键的几个属性: struct Bucket { uint8 tophash[BUCKETSIZE]; // top 8 bits of hash of each entry (0 = empty) Bucket *o... 阅读全文

posted @ 2015-05-17 14:23 richmonkey 阅读(809) 评论(0) 推荐(1) 编辑

字符串拼接两种实现方式

摘要: #字符串拼接字符串拼接的实现方式主要有两种现以python和go来说明两种实现方式,python和go中的字符串对象都是不可变的.go的代码: package main import "fmt" func main() { t := "" s := "123" ... 阅读全文

posted @ 2015-05-17 14:18 richmonkey 阅读(980) 评论(0) 推荐(0) 编辑

导航