美文网首页研发那点事
Golang的并发编程

Golang的并发编程

作者: 查灵 | 来源:发表于2019-08-08 12:03 被阅读0次

    golang是为并发而生的语言。优雅的并发编程范式,完善的并发支持,出色的并发性能是golang区别于其他语言的一大特色。

    并发的优势:

    1、并发能更客观地表现问题模型

    2、并发可以充分利用cpu核心的优势,提高程序的执行效率

    3、并发能充分利用cpu与其他硬件设备固有的异步性

    golang并发采用的协程,也是轻量级别线程,goroutine。而goroutine间通信方式是channel,我们可以使用channel在两个或者多个goroutine之间传递消息。channel是进程内的通信方式,因此通过channel传递的过程和调用函数时的参数传递行为比较一致,比如也可以传递指针等。这跟面向过程c语言处理多线程采用互斥锁写法不太一样的方式,更直接了当采用并发模式编程。

    select用来监控一系列的文件句柄,一旦其中一个文件句柄发生了IO动作,该select()调用就会被返回。该机制也用于实现高并发的socket服务器程序,也可以用来处理异步IO问题。结合channel的缓冲机制。所以在golang并发编程中,需要十分小心处理死锁的问题。通道需要保证有流入也有流出,如果造成只入不出或者流入速度大于流出的速度,都会对程序造成死锁或者堵住。

    多核并行化,golang编译器还不能很智能地发现和利用多核的优势。虽然goroutine简化了我们写并行代码的过程,但实际上整体运行效率并不真正高于单线程程序。

    相关文章

      网友评论

        本文标题:Golang的并发编程

        本文链接:https://www.haomeiwen.com/subject/jpptjctx.html