go协程和线程的区别

2024-03-01 11:59:00
will
原创
6
摘要:go协程和线程的区别

https://answer.baidu.com/answer/land?params=aQ%2BZT6GY4aeY%2BKfFIe1JnEH2cTWpSu9rdbp4GncASKiBLdQXhWsdKVKhncxNWBoA2W63WivxuAjHKnqGpA2oiaOE27yTvcyZ%2B8OgpvU3nehph840C5cvgg6qZPcC8wm1LY1YBgVrAZpcqO%2FWvDDIZ9BwjN%2FjDqs8wm8D6ew3DtOx9hybO2XjIgMB3AH5hrgQ&from=dqa&lid=e9bea8030007af75&word=go%E5%8D%8F%E7%A8%8B%E5%92%8C%E7%BA%BF%E7%A8%8B%E7%9A%84%E5%8C%BA%E5%88%AB


https://www.php.cn/faq/500670.html 什么是线程,线程与进程之间的关系, 线程与协程之间的关系

https://www.php.cn/faq/472557.html  golang中线程和协程的区别是什么

go协程和线程的区别

Go协程和线程的主要区别在于调度方式、创建和销毁的代价、内存占用、同步通信方式、异常处理方式。以下是详细介绍:12345678

  • 调度方式。Go协程由Go语言的运行时调度器(Goroutine Scheduler)调度,而线程由操作系统的调度器(Thread Scheduler)调度。Go调度器使用了类似于M:N的模型,将多个协程映射到更少的OS线程上,使得协程的调度更加轻量级和高效。线程是抢占式调度,操作系统调度器为了均衡每个线程的执行周期,会定时发出中断信号强制执行线程上下文切换。而协程是协作式调度,一个协程处理完自己的任务后,可以主动将执行权限让渡给其他协程,不会被轻易抢占。只有在协程运行了过长时间后,Go语言调度器才会强制抢占其执行。134567
  • 创建和销毁的代价。协程创建和销毁协程的代价远远低于线程。协程的创建和销毁只需几个栈帧和几个字节的内存,而线程的创建和销毁需要较大的栈空间、寄存器、内存等资源。1
  • 内存占用。协程的栈空间可以根据需要动态地伸缩,因此占用的内存相对较小。而线程的栈空间是固定的,因此占用的内存相对较大。
  • 同步通信方式。协程之间可以通过channel进行同步通信,而线程通常需要借助于锁和条件变量等机制来实现同步。14
  • 异常处理方式。协程的异常可以被其所在的协程捕获和处理,而线程的异常通常需要通过线程外的机制来处理


来源参考:
1go协程和线程有什么区别www.lsjlt.com
2go语言中协程与线程的区别是什么php中文网
3golang线程和协程有什么区别php中文网
4golang中协程与线程的区别是什么php中文网
5golang中线程和协程的区别是什么php中文网
6golang协程和线程区别博客园
7搜索_华为云华为云官方





https://www.php.cn/faq/472557.html  golang中线程和协程的区别是什么

    发表评论
    评论通过审核之后才会显示。