Go并发之同步异步、异步回调_go 异步-程序员宅基地

技术标签: 高并发  golang  Go  go  并发编程  

Go并发之同步异步、异步回调

大家好,这里是努力变得优秀的R君,本次我们这里继续来进行Golang系列《让我们一起Golang》,区块链系列内容正在进行中,共识算法已经完毕,接下来我们来构建一个以太坊DAPP,我们都知道以太坊的主体是Go语言,所以我们还是十分有必要将Go语言的基础学好,本次我们继续来再谈Go并发之同步异步、异步回调,希望对大家有帮助。

众所周知,Go语言最强大的地方在于它支持的高并发特性。下面我们先来了解一下Go并发的一些理论基础:同步异步、异步回调。也顺带在此介绍一下进程、线程、协程的区别。

进程、线程、协程的区别
  • 一边写代码、一边听音乐、一边聊天这就是进程并发。
  • 一个进程可以开几条线程。比如迅雷下载时把一个文件分成多块,然后多线程下载。
  • 协程其实也就被称为微线程,它的资源开销远远小于线程。
同步异步、异步回调
  • 多个事件并发执行是为异步

  • 多个事件按顺序执行是为同步

  • 某个事件一直无法取到资源来继续执行是为阻塞,如果是串行的,前一个事件未执行,那下一个事件就需要永远等下去

  • 什么是异步回调机制?

    通俗来说,假如你和你老板同时工作,你敲代码、写文档,老板喝茶、去会所。

    你们两是同时干你们的工作,这是异步,然后你干完了事,得向老板汇报你的工作,你与老板这样就有了交流。没干完事不能打电话给老板。老板会根据你的工作效果来给你加减奖金。

    这样老板不必等你辛辛苦苦工作完了再去喝茶、去会所了。

    这就是异步回调!

  • 异步的优缺点:

    • 优点:
      1. 速度快,效率高
      2. 没有时序上的严格先后关系
      3. 异步可以不需要立刻给调用方最终的结果,在给调用方最终结果之前可以进行更多操作。
      4. 增强系统健壮性。
    • 缺点:
      1. 使用回调函数时容易形成回调地狱
      2. 开发难度较大
      3. 并发量不容易控制,容易消耗过多资源。
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_36045898/article/details/124245542

智能推荐

Qt for Mac:配置/搭建开发环境_qt open source 6.4.2 for mac-程序员宅基地

文章浏览阅读3.8w次,点赞7次,收藏20次。经常看到有人在问,所以干脆整理下,其实步骤很简单。 我用的环境,在写稿时都是最新的,分别是:macOS 10.12.4、Xcode8.3.2和Qt5.8.0,都是在虚拟机里弄的。准备首先要准备一个macOS系统,这个是真机或者虚拟机都可。我这里用了虚拟机,安装步骤我就跳过不讲了。PS:我制作macOS系统安装U盘的命令是sudo /Applications/Install\ macOS\ Si_qt open source 6.4.2 for mac

MySQL TEXT与BLOB-程序员宅基地

文章浏览阅读7次。一般在保存少量字符串的时候,我们会选择CHAR或者VARCHAR;而在保存较大文本时,通常会选择使用TEXT或者BLOB。二者之间的主要差别是BLOB能用来保存二进制数据,比如照片;而TEXT只能保存字符数据,比如一篇文章或者日记。TEXT和BLOB中又分别包括TEXT、MEDIUMTEXT、LONGTEXT和BLOB、MEDIUMBLOB、LONGBLOB三种不同的类型,它们之间的主要区别是存...

Python urllib 入门使用(步骤详细)_urllib教程-程序员宅基地

文章浏览阅读1.3k次。urllib库,它是Python内置的HTTP`request` 请求模块,提供最基本的 `HTTP` 请求处理。`parse` 工具模块,提供处理 `url` 的很多方法:拆分、解析、合并等等。`error` 异常处理模块,如果出现请求错误,可以捕获这些错误,保证程序不会意外终止。`robotparser` 模块,主要用来识别网站的 `robots.txt` 文件,判断哪些网站可以爬取,用的比较少。# 使用 urllib# url 的组成wd=123# 协议 主机 端口号 路径 参数 锚点。_urllib教程

同时配置多个Tomcat的环境变量_环境变量配置多个tomcat-程序员宅基地

文章浏览阅读2k次。装两个tomcat 分别是6.0和7.0 可想运行tomcat6.0 但是实际上却运行tomcat7.0 两个版本都是用解压缩包 其实就是不能运行tomcat6.0 只能运行7.0 两个环境变量都配置了。端口也改了 还是不行我遇到这种情况了,不知大家遇到没有,如下是我的解决方法:当第一个tomcat启动后,后面tomcat的server.xml中的端口不管怎么改,仍然会报端口冲突。..._环境变量配置多个tomcat

14、Android Studio通过http向C++服务端传递base64图片,然后对图片处理(写入本地)返回数据给Android studio_android studio 数据库上传图片-程序员宅基地

文章浏览阅读3.3k次,点赞2次,收藏6次。基本思想:最近做了一个项目需要使用将android studio 中抓取的视频帧和一些数据上传服务器处理,然后将处理结果返回给android studio 手机端一、因为不太会写通信,着实补充了一些知识,还是不会写,尴尬了,找到了一个轻量级的项目,参考附录一,稍微修改了一下,使用rapidjson作为json的客户端数据传递和服务端数据解析现在window11 上使用clion简单测试一下,放一下目录和贴一下cmakelist.txt即可cmakelists.txt (客户端)cmake__android studio 数据库上传图片

强化学习的学习之路(二十三)_2021-01-23:Distributional DQN:A Distributional Perspective on Reinforcement Learning-程序员宅基地

文章浏览阅读856次,点赞3次,收藏15次。作为一个新手,写这个教程也是想和大家分享一下自己学习强化学习的心路历程,希望对大家能有所帮助。这个系列后面会不断更新,希望自己能保证起码平均一天一更的速度,先是介绍强化学习的一些基础知识,后面介绍强化学习的相关论文。本来是想每一篇多更新一点内容的,后面想着大家看CSDN的话可能还是喜欢短一点的文章,就把很多拆分开来了,目录我单独放在一篇单独的博客里面了。完整的我整理好了会放在github上,大家一起互相学习啊!可能会有很多错漏,希望大家批评指正!接下来的几个博客将会分享以下有关DQN算法及其改进,包括DQ_distributional dqn

随便推点

p45。。。。。。。。。。。-程序员宅基地

文章浏览阅读182次。1/修改客户信息public int updateCustomer(Customer customer){public ListgetAl1Customer()一。1/根据id查询客户信息。//获取所有客户信息。

Kaggle 数据挖掘比赛经验分享(转)-程序员宅基地

文章浏览阅读68次。原作者:陈成龙简介Kaggle于2010年创立,专注数据科学,机器学习竞赛的举办,是全球最大的数据科学社区和数据竞赛平台。笔者从2013年开始,陆续参加了多场Kaggle上面举办的比赛,相继获得了CrowdFlower搜索相关性比赛第一名(1326支队伍)和HomeDepot商品搜索相关性比赛第三名(2125支队伍..._news_recommendation/ctr_prediction/avazu_ctr/train.csv

【架构实践】软件研发的第一性原理_软件行业的第一性原理是什么-程序员宅基地

文章浏览阅读2.3w次,点赞2次,收藏2次。更可行的思路是解决电池的原料问题,因为电池的原材料是相对固定的,这才是最基础的出发点。,正如樊登在其《低风险创业》一书中说,如果创业时钱多不是好事,因为钱多就猛招人、大做广告、买流量等,表面上看,不好的产品销售不错,会给自己错觉,觉得开发出来的产品是好产品,但最后钱烧光了,产品卖不出去了,还要裁人。首先,必须说,这种思考方法非常耗费脑力,因为需要透过现象找到最本质的,最为真实的元素作为基础,在电池的例子中,如果马斯克归因的结果是供应商的问题,说服他们降价,那么不仅会导致关系紧张,也没有办法解决问题。_软件行业的第一性原理是什么

java实验1_java实验1实验报告(20135232王玥)-程序员宅基地

文章浏览阅读138次。实验一 Java开发环境的熟悉一、实验内容1. 使用JDK编译、运行简单的Java程序2.使用Eclipse 编辑、编译、运行、调试Java程序二、实验要求1.没有Linux基础的同学建议先学习《Linux基础入门(新版)》《Vim编辑器》 课程2.完成实验、撰写实验报告,实验报告模板见QQ群,注意实验报告重点是运行结果,遇到的问题(工具查找,安装,使用,程序的编辑,调试,运行等)、解决办法(空洞..._java本次实验的收获,存在的问题与建议

Javascript的优点和缺点_网页中添加javascript的方式及其优缺点-程序员宅基地

文章浏览阅读2.5k次。今天来聊聊Javascript的优缺点.因为是考虑执行速度, 因为解释型语言, JavaScript省掉了编译的步骤, 执行过程更轻量. 执行速度虽然不如c++, 但是因为有了V8引擎的加持, 速度要快过python.其次,Javascript学习和理解起来很简单. 事实上, 它的第一个版本就是为了能在浏览器里, 验证用户在表单输入的内容是否规范. 所以javascript没有像其它语言一样很重的规范和限制, 同时和python一样, 它也是弱类型的动态语言.由于主流的浏览器都支持JavaS.._网页中添加javascript的方式及其优缺点

狗年出生的宝宝取名都有哪些注意事项呢?起名真不是简单事_疫情宝宝出生起名-程序员宅基地

文章浏览阅读473次。很多人以为给孩子起名是件很简单的事情,只需要了解一些比较好的名字就好。其实真的是这样的吗?肯定不是的,为孩子起名也是有很多忌讳的。这不,今天就为大家好好讲讲狗年出生的宝宝取名的一些忌讳吧。一、取名字忌不雅的谐音有些人的名字看起来好像是很高雅的,但是一读起来就有问题了,各种谐音出现的不雅的语句。这样的名字经常会成为其他人的一种玩笑。二、忌讳用过于时髦的字在不同的时期,总是会出现一_疫情宝宝出生起名

推荐文章

热门文章

相关标签