即时通讯软件可以用GO语言实现吗

四个方面特点:
  • 1. 并发支持

对于及时通讯、网络编程等方面,并发支持一定是并不可少的。 goroutine,用户态"线程",大家所说的协程,支持并发操作。已经提供了 sync 包来解决并发操作的并发安全问题。 sync 包中有:互斥锁、读写锁、原子操作(atomic)、WaitGroup等。同时,结合IPC(进程间通信),常被称道的 channel。

  • 2. 内存消耗方面

每个 goroutine (协程) 默认占用内存远比 Java 、C 的线程少。 goroutine: 2KB 线程: 8MB

  • 3. 线程/goroutine 切换(调度)开销方面

线程/goroutine 切换开销方面,goroutine 远比线程小 线程: 涉及模式切换(从用户态切换到内核态)、16个寄存器、PC、SP...等寄存器的刷新等。 goroutine: 只有三个寄存器的值修改 - PC / SP / DX.

  • 4. 网络操作

Golang 提供了 net 包,里面有方便网络操作的包,比如TCP/UDP/HTTP...等多种第四层以及七层网络的支持,用起来也很方便。

原文发布于微信公众号 - Golang语言社区(Golangweb)

原文发表时间:2017-04-29

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏JMCui

多线程编程学习一(Java多线程的基础).

一、进程和线程的概念 进程:一次程序的执行称为一个进程,每个 进程有独立的代码和数据空间,进程间切换的开销比较大,一个进程包含1—n个线程。进程是资源分享的最小...

34670
来自专栏lgp20151222

idea+jsp+jstl c标签页面异常

把这两个包分别加到项目依赖库,生成的tomcat的war文件(即WEB-INF文件)的lib目录下,还有tomcat自己的lib

17420
来自专栏架构师之路

浅谈CAS在分布式ID生成方案上的应用 | 架构师之路

近几篇文章聊CAS被骂得较多,今天还是聊CAS,谈谈CAS在一种“分布式ID生成方案”上的应用。 所谓“分布式ID生成方案”,是指在分布式环境下,生成全局唯一I...

44940
来自专栏有趣的django

Flask请求扩展和数据库连接池

32700
来自专栏Android-薛之涛

Android-多线程

        通俗的说:我们平日里打开的QQ,微信,简书,都是一个进程。进程是程序的一次动态执行过程,它需要经历从代码加载,代码执行到执行完毕的一个完整的过程...

10620
来自专栏公众号_薛勤的博客

Tomcat完美配置多个HOST主机,域名,SSL

25530
来自专栏程序员宝库

让你的 git 拥有不同身份

由于你没有进行过特别的设定,所以 git不管它是往 github上传还是往你公司的服务器上传,都会以一个完全相同的身份上传,这有时候会造成困扰,比如说这样: ?...

401140
来自专栏JAVA后端开发

vue自动保存表单功能的实现

最近想实现一个表单内容的自动保存,原来是想通过监听表单的change事件来解决.但后面想想,现在都是数据驱动了,监听数据变化就行了. 页面表单如下:

72940
来自专栏SDNLAB

ODL碳版本模块开发及流程梳理

文章主要基于ODL碳版本,进行简单插件的构建、安装、部署,以一个插件开发为例,介绍ODL新版本开发过程中的一些具体问题。 ? 一、碳版本简易开发流程 1.1 开...

55580
来自专栏蓝天

Tcpdump 的用法

更新时间:2005-12-26 11:55 阅读提示:第一种是关于类型的关键字,主要包括host,net,port, 例如 host 210.27.48.2,指...

12040

扫码关注云+社区

领取腾讯云代金券