当前位置: 首页 > news >正文

怎么做有趣视频网站网站蜘蛛来访记录

怎么做有趣视频网站,网站蜘蛛来访记录,网站建设哪家售后做的好,网络营销的方式都有哪些文章目录 前言代码仓库核心概念main.go(有详细注释)结果总结参考资料作者的话 前言 Go并发编程学习的简单代码示例:生产者消费者模型。 代码仓库 yezhening/Programming-examples: 编程实例 (github.com)Programming-examples: 编程实例 (g…

文章目录

  • 前言
  • 代码仓库
  • 核心概念
  • main.go(有详细注释)
  • 结果
  • 总结
  • 参考资料
  • 作者的话

前言

Go并发编程学习的简单代码示例:生产者消费者模型。


代码仓库

  • yezhening/Programming-examples: 编程实例 (github.com)
  • Programming-examples: 编程实例 (gitee.com)

核心概念

并行和并发:

  • 并行:同时运行多个任务。依赖硬件中央处理器(CPU)的数量或CPU的核心数量,CPU或CPU核心的数量越多,能够同时运行的程序/进程越多
  • 并发:宏观上是“同时运行”,微观/实际上是在极短的时间内顺序运行多个程序/进程

进程、线程、协程和Go协程(goroutine):

  • 进程:资源分配的基本单位
  • 线程:内核态线程; CPU调度的基本单位
  • 协程:用户态线程;轻量级线程
  • 一个进程可以有多个线程
  • 线程和协程对应关系可以是一对一、一对多和多对多
  • goroutine:Go的协程概念,使用G(Goroutine)-P(Processor)-M(Machine)模型

Go的并发编程:

  • 使用go关键字开启多协程goroutine,而不是多进程和多线程,实现并发

  • 使用管道channal,而不是锁,实现同步互斥和数据通信

可联想进程间通信(IPC)中的管道pipe()、共享内存等方式

  • 使用select{}语句,实现监听输入/输出(I/O)操作

可联想网络编程中的监听文件描述符select()函数

相比于C、C++和其他语言,使用Go实现并发编程的逻辑很简单


main.go(有详细注释)

package main // 一个工程只有一个main包// 导入路径
import "fmt" // 用于输出// 生产者
// 参数:数据管道,单向只写;标志管道,单向只读
func producer(data_channel chan<- int, flag_channel <-chan bool) {// 循环处理,接收到消费者标志后才退出循环和函数data := 0 //生产者生产的数据for {// select{}语句监听输入/输出(I/O)操作select {case data_channel <- data: //有数据写data++case flag := <-flag_channel: //有标志读fmt.Println("生产者读标志:", flag, "结束生产")return}}
}// 消费者
// 参数:数据管道,单向只读;标志管道,单向只写
func consumer(data_channel <-chan int, flag_channel chan<- bool) {// 约定循环5次后,消费者停止消费,向生产者发送停止生产标志for i := 0; i < 5; i++ {data := <-data_channel //读数据fmt.Println("消费者读数据:", data)}flag_channel <- true //写标志return
}// 一个工程只有一个main()函数,是程序的唯一入口
func main() {data_channel := make(chan int, 0)// 数据管道,生产者向消费者传输数据// 传输int类型数据,0:无缓冲,双向flag_channel := make(chan bool, 0)// 标志管道,消费者向生产者传输标志,消费者不再消费,让生产者停止生产// 传输bool类型数据,0:无缓冲,双向go consumer(data_channel, flag_channel) //go关键字开启goroutine处理消费者任务producer(data_channel, flag_channel) // main()中是主goroutine,处理生产者任务
}

结果

PS C:\Users\DSHH\Desktop\go_test> go run main.go
消费者读数据: 0
消费者读数据: 1
消费者读数据: 2
消费者读数据: 3
消费者读数据: 4
生产者读标志: true 结束生产
PS C:\Users\DSHH\Desktop\go_test> 

总结

Go并发编程的学习代码示例:生产者消费者模型。


参考资料

  • 20个小时快速入门go语言(中)_哔哩哔哩_bilibili
  • 一文看懂Go语言协程的设计与原理 - 掘金 (juejin.cn)

作者的话

  • 感谢参考资料的作者/博主
  • 作者:夜悊
  • 版权所有,转载请注明出处,谢谢~
  • 如果文章对你有帮助,请点个赞或加个粉丝吧,你的支持就是作者的动力~
  • 文章在描述时有疑惑的地方,请留言,定会一一耐心讨论、解答
  • 文章在认识上有错误的地方, 敬请批评指正
  • 望读者们都能有所收获

http://www.yayakq.cn/news/915944/

相关文章:

  • 创意餐厅网站建设文案书南昌手机模板建站
  • jsp网站建设期末作业wordpress会员下载功能
  • 免费网站制作app如何去掉2345网址导航
  • 恩施做网站公司昆明搭建微信网站哪家最优惠
  • 网站开发实战asp制作视频湘西建设监理协会网站
  • 开发公司认领工程网站怎么改变wordpress最大上传文件
  • 哪里可以接网站开发项目做阳光电子商务平台
  • 建设企业网站官网下载中心装修店铺设计
  • 商城建设网站公司游仙区专业网站建设价格
  • 网站建设后台功能模块网站备案资料下载
  • 做网站带微好吗有了空间怎么做网站
  • 代码怎么做网站李建 wordpress
  • 做网站分为哪几个岗位wordpress 子页面
  • 深圳官网建站服务商手机在线建站
  • 网页导航网站设计网站导航固定
  • 怎么建立网站推广佛山seo教程
  • 济南营销型网站建设贵吗网站备案 取名资讯通不过
  • 成都快速建站公司怎么投诉做网站的公司
  • 佛山营销网站建设多少钱哈尔滨市公共资源交易中心
  • 什么网站可以教做面包为什么网站建设比商场要贵
  • 吕梁网站定制张掖网站建设公司
  • 网站角色权限正规网站建设建设公司
  • 公司网站后台更新一二三四在线观看免费中文动漫版
  • 如何提升进入网站的速度网站设计制作代码
  • 网站开发技术网站模板淘宝客 wordpress主题
  • 网站建设需要考虑什么因素首页关键词是不是一个网站的核心关键词所在
  • 禅城区城乡建设局网站html模板图片
  • 阿里云万网网站网站搜索引擎怎样做
  • 北京建设工程质量总站网站电子政务网站建设实践报告
  • 软膜做网站有用吗网站规划与建设规划书