![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
调度器
浩玥当空照
写的过程就是在学习
展开
-
15-go栈管理
Linux下线程栈最大大小可以通过ulimit -s查看,单位KB。go@ubuntu:~$ ulimit -s 8192go@ubuntu:~$ 可以通过ulimit -s 指定全局栈大小。也可以通过 pthread_attr_setstacksize()指定当前线程的栈大小。这两种方式前者会造成系统内存的浪费,后者需要评估线程大小,使用起来并不方便。为了解决这个问题,gcc给出了...原创 2019-07-07 23:36:45 · 314 阅读 · 0 评论 -
14-go调度器
go调度器主要有4个重要结构:m,p,g,schedt。定义在src\runtime\runtime2.go中。schedt结构就是调度器,它维护有存储M和G的队列以及调度器的一些状态信息等。1. MPG1.1 M:代表内核级线程一个M就是一个线程,goroutine就是跑在M之上的;M是一个很大的结构,里面维护小对象内存cache(mcache)、当前执行的goroutine、随机数...原创 2019-07-03 23:28:29 · 319 阅读 · 0 评论 -
16-go调度器触发-syscall
golang提供syscall库对操作系统的系统调用作了封装,比如:func Open(path string, mode int, perm uint32) (fd int, err error)func Read(fd int, p []byte) (n int, err error)func Write(fd int, p []byte) (n int, err error)对于s...原创 2019-07-09 23:13:30 · 553 阅读 · 0 评论