go语言学习笔记 — 并发编程 — 轻量级线程goroutine(1):并发与并行

并发编程

并发指在同一时间内可以执行多个任务。并发编程包含多线程编程、多进程编程、分布式程序等。

  • go语言的并发是指多线程并发

  • goroutine类似线程,可以根据需要创建多个goroutine并发工作

  • goroutine是由go语言的编译器运行时(runtime)调度完成,而线程是由操作系统调度完成

  • 多个goroutine之间通过channel通道进行通信。goroutine和channel是go语言实现CSP(Communicating Sequential Process)并发模式的基础。


并发与并行

  • 概念

并发:在不同时间点,把任务交给处理器处理。在同一时间点,任务并不会同时运行。

并行:把每一个任务分配给单个逻辑处理器独立完成。在同一个时间点,任务一定是同时运行。

并发与并行的区别:在同一个时间点,任务是否同时执行。


例子

打电话与吃饭。在吃饭时,电话来了,需要停止吃饭去接电话,电话接完后回来继续吃饭。这个过程是并发执行。在吃饭时,电话来了,边吃饭边接电话。这个过程是并行执行。

在GOMAXPROCS数量与任务数相等时(>=),go程序可以做到并行执行。但一般情况下,go程序都是并发执行。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值