• go语言中的goroutine和其它语言中的coroutine有什么相同和不同?
    1. coroutine 意味着支持将控制转移到另一个协程的明确手段。也就是说,程序员在确定coroutine何时应该暂停执行并将其控制权传递给另一个coroutine时(通过调用return/exit(通常称为yield))来编写coroutine。
    2. goroutine 它隐含的放弃了某些不确定点的控制权,当goroutine即将在I / O完成,信道发送等某些(外部)资源上休眠时发生这种情况。这种方法与通过channel共享状态相结合程序员将程序逻辑编写为一组连续的轻量级进程,它消除了基于协程和基于事件的方法常见的意大利面条代码问题。
  • goroutine和操作系统线
    1. 相同点,都是简化了并发的操作。
    2. 不同点,简单点来说:就是线程开销太大了,所以搞一个协程,可以在线程之间调度,具体的表现就是将一个函数的执行做成异步的,如果我们用线程来做的话,开销会很大,而且线程上下文的切换也很耗时间。下面翻译原文给的解释“Goroutines是将独立执行的函数 - 协程 - 复用到一组线程上。当协程阻塞时,例如通过调用阻塞系统调用,运行时自动将同一操作系统线程上的其他协同程序移动到另一个可运行的线程,这样它们就不会被阻塞。程序员看不到这一点,这就是重点。结果,我们称之为goroutines,可以非常便宜:它们在堆栈的内存之外几乎没有开销,这只是几千字节。为了使堆栈变小,Go的运行时使用可调整大小的有限堆栈。一个新铸造的goroutine给了几千字节,这几乎总是足够的。如果不是,则运行时间会自动增长(并缩小)用于存储堆栈的内存,从而允许许多goroutine生存在适量的内存中。 CPU开销平均每个函数调用大约三个廉价指令。在同一地址空间中创建数十万个goroutine是切实可行的。如果goroutines只是线程,系统资源将以更小的数量运行。”
  • goroutine的默认调度器是怎么调度的?如何实现自己的一个调度器?

    • 这个是在go语言的runtime里面实现的,需要了解一下go的runtime。参考文章:https://tonybai.com/2017/06/23/an-intro-about-goroutine-scheduler/

    goroutine的生命周期是怎样的过程?

    • 如果在一个goroutine的函数中写一个死循环,那么go的main goroutine是可以保证正常退出,如果main goroutine没有循环,那么子goroutine也不会有循环。这个方案应该是和goroutine的调度机制有关。

    golang中垃圾回收机制是怎么样的?

    goroutine中常用的数据结构?如何封装自己的数据结构?

    • 就像c语言中自定义结构体一样,golang中同样使用。
  • 在服务器端编程,如何使用socket,什么时候使用应用层消息,如:http,什么时候使用传输层协议,如tcp。
  • go语言编程中的select和c语言中使用select有什么区别?
    • 很类似,golang中select 可以处理多个channel, 就像c语言中使用select处理多个socket通信一样。
  • go语言中有没有线程,有没有进程?如何使用?
    • 没有像python中processing 和multiprocessing 之间的区别,go语言中只有一个goroutine,并且在这之上封装了一个context来实现goroutine之间的通信。
  • go语言中channel,buffer怎么理解,如何控制大小?
    • 有channel,就有buffer,目的是为了缓存大小,但是又不能太大,所以有这么一个参数可以让我们去控制。
  • go语言内存模型
    • 主要的是happern bofore,1:w happens before r, 2:Any other write to the shared variable v either happens before w or after r。并且提供了多个goroutine并发操作同步的手段。参考链接:https://golang.org/ref/mem

参考链接:go语言官网常见问题列表:https://golang.org/doc/faq

go语言常见问题总结的更多相关文章

  1. C语言常见问题总结

    1.多次运行程序 解决方法: 错误原因是,已经编译运行出一个exe,没有关闭此exe,又点击编译运行. 应该将之前运行出的exe关闭,再来运行代码 2.单精度类型和双精度类型如何区分使用... 解决方 ...

  2. 测开面试 | Python语言常见问题

    1.面向对象的概念? 面向对象编程,简称OOP,是一种程序设计思想 主要包括:类.继承.多态(子类方法覆盖父类方法).实例.属性.方法 2.什么是进程.线程.协程? 进程:独立数据空间,进程间不共享数 ...

  3. C语言常见问题 如何用Visual Studio编写C语言程序测试

    新建Win32控制台应用程序   勾选控制台空项目   右击源文件,添加cpp文件   输入范例代码,可以正常运行#include <stdio.h> int main(void) { i ...

  4. 能让你成为更优秀程序员的10个C语言资源

    能让你成为更优秀程序员的10个C语言资源 本文由 伯乐在线 - archychu 翻译自 mycplus.欢迎加入 技术翻译小组.转载请参见文章末尾处的要求. 一些人觉得编程无聊,一些人觉得它很好玩. ...

  5. C语言相关的经典书籍(附Ebook)

    个人稍微分了一下类,有的看过,有的听人“传说过”,欢迎大家补充和共同学习. 真心经典:每个行业或者领域都有一些东西是不会随时间而逐渐消逝,以下的就是. <C语言程序设计>(第2版.新版) ...

  6. C语言权威指南和书单 - 适用于所有级别

    注:点击标题免费下载电子书 所有级别 1. The C Programming Language (2nd Edition) 2. C: A Reference Manual (5th Edition ...

  7. 10个足以让你成为更优秀的程序员的C语言资源

    一些人觉得编程无聊,一些人觉得它很好玩.但每个程序员都必须紧跟编程语言的潮流.大多数程序员都是从C开始学习编程的,因为C是用来写操作系统.应用程序最常用的语言. · C编程笔记 这些是华盛顿实验学院C ...

  8. C语言细节笔记2

    C语言常见问题笔记:    1. 指针的声明     char * p1, p2;  p1 是一个指向char类型的指针,而p2是一个char类型变量  这是由于 * 并不是基本类型的一部分,而是包含 ...

  9. 【转载】【收藏】Github上免费的编程教程【作者Victor Felder】

    原链接:https://github.com/EbookFoundation/free-programming-books/blob/master/free-programming-books-zh. ...

随机推荐

  1. php年会抽奖

    <?php/** * 抽奖 * @param int $total */function getReward($total=1000){ $win1 = floor((0.12*$total)/ ...

  2. Python基础(六)_全局变量声明、可变参数、关键字参数

    1. global声明全局变量 #声明name这个变量为全局变量,只是写在函数里面 #写代码时,尽量不要用全局变量,会一直占用内存.       ------->{'name':'abc','s ...

  3. undefined的几种情况

    1.变量声明了,但是没有赋值: 2.一个变量声明了,并且赋值了undefined: var a = undefined; 3.一个对象中,获取某个不存在的属性,值也是undefined

  4. WSDL文档结构图

  5. mysql的并发控制

    并发即指在同一时刻,多个操作并行执行.MySQL对并发的处理主要应用了两种机制——是"锁"和"多版本控制". 1.并发控制 MySQL提供两个级别的并发控制:服 ...

  6. Ipan笔记-2

    其实二级联动下拉选择框很简单的, 参考: https://www.cnblogs.com/zhangmiaomiao/p/6013533.html ============== 关于$.each和 $ ...

  7. 命令行找不到genstrings问题tip

    问题:初次使用命令行genstrings,提示使用的是命令行工具而非xcode,无法直接使用genstrings. 解决方案:命令行输入sudo xcode-select --switch /Appl ...

  8. jquery之div模拟textarea文本域轻松实现高度自适应

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  9. 使用Rancher和私有仓库快速搭建Kubernetes集群

    来来来,先出题:Rancher可以快速部署Kubernetes,但其使用的gcr.io上的镜像无法下载怎么办?使用Rancher可以快速部署Kubernetes,但我们需要下载哪些镜像?Rancher ...

  10. 英语发音规则---E字母常见的发音组合有哪些

    英语发音规则---E字母常见的发音组合有哪些 一.总结 一句话总结:很好记的e和5个元音字母的组合,加一个非e开头的ie e:开音节 /i:/  eve /i:v/ n. 夏娃----闭音节 /e/ ...