美文网首页
goroutine 和线程的区别

goroutine 和线程的区别

作者: 名白 | 来源:发表于2018-10-23 17:30 被阅读0次

好久没写点儿啥了,强行更新一下。

1,从使用上讲

1,goroutine 比线程更轻量级,可以创建十万、百万不用担心资源问题。

2,goroutine 和 chan 搭配使用,实现多线程、高并发 实现起来要方便很多。

3,虽然go的并发用起来很方便,但多线程还是要小心不要产生 数据竞态,以及共享锁还是互斥锁的选择问题、并发操作的数据同步问题(多核心,不同的cpu缓存操作,同步到内存使其他协程感知)。

2,从其实现上讲

1,从资源上讲,线程的栈内存大小一般是固定的一般为2
MB,虽然这个数值可以设置,但是 太大了浪费,太小了容易不够用。
,
而 goroutine 栈内存是可变的,初始一般为 2KB,随着需求可以扩大达到1GB。 所以goroutine 十分的轻量级,且能满足不同的需求。

2,从调度上讲,线程的调度由 OS 的内核完成;线程的切换需要CPU寄存器和内存的数据交换,从而切换不同的线程上下文。 其触发方式为 CPU时钟。
,
而goroutine 的调度 则比较轻量级,由go自身的调度器完成;其只关心当前go程序内协程的调度;触发方式为 go内部的事件,time.sleep,通道阻塞,互斥量操作等。

3,协程同线程的关系,有些类似于 线程同进程的关系。
多个协成绑定到同一个线程上,按照一定的调度算法执行。

有理解不对写错了的地儿,欢迎批评和指正。

相关文章

  • goroutine 和线程的区别

    好久没写点儿啥了,强行更新一下。 1,从使用上讲 1,goroutine 比线程更轻量级,可以创建十万、百万不用担...

  • 【go语言学习】并发实现

    一、什么是goroutine Goroutine是Go语言特有的名词。区别于进程Process,线程Thread,...

  • Goroutine协程

    Goroutine Go语言中的goroutine概念类似于线程,但goroutine是由Go的运行时调度和管理的...

  • TODO:Go语言goroutine和channel使用

    TODO:Go语言goroutine和channel使用 goroutine是Go语言中的轻量级线程实现,由Go语...

  • go语言并发goroutine(七)

    1.goroutine基础 goroutine 是go语言实现的核心,实质就是线程,goroutine 是通过go...

  • Golang基础(七) | 并发

    goroutine goroutine是Go并行设计的核心。goroutine说到底其实就是协程,但是它比线程更小...

  • GO语言基础(十)-并发

    goroutine goroutine是Go并行设计的核心。goroutine说到底其实就是协程,但是它比线程更小...

  • Go 协程的实现原理

    G (goroutine) G是goroutine的头文字, goroutine可以解释为受管理的轻量线程, go...

  • go Goroutine和Channel的使用总结

    Goroutine Goroutine可以被看作是Go语言特有的应用程序线程, 传统的线程通讯:将数据存放在共享...

  • goroutine线程

    原文链接:http://www.cnblogs.com/yjf512/archive/2012/06/06/253...

网友评论

      本文标题:goroutine 和线程的区别

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