学生机

go语言之并发

简介 多核处理器越来越普及,那有没有一种简单的办法,能够让我们写的软件释放多核的威力?答案是:Yes。随着Golang, Erlang, Scale等为并发设计的程序语言的兴起,新的并发模式逐渐清晰。正如过程式编程和面向对象一样,一个好的编程模式需要有一个极其简洁的内核,还有在此之上丰富的外延,可以解决现实世界中各种各样的问题。本文以GO语言为例,解释其中内核、外延。 并发模式之内核 这种并发模式的内核只需要协程和通道就够了。其中协程负...阅读全文

开源中国博客 2016-12-10 23:00:02 黑神领主

golang sync.WaitGroup解决goroutine同步

go提供了sync包和channel来解决协程同步和通讯。新手对channel通道操作起来更容易产生死锁,如果时缓冲的channel还要考虑channel放入和取出数据的速率问题。 从字面就可以理解,sync.WaitGroup是等待一组协程结束。它实现了一个类似任务队列的结构,你可以向队列中加入任务,任务完成后就把任务从队列中移除,如果队列中的任务没有全部完成,队列就会触发阻塞以阻止程序继续运行。 sync.WaitGroup只有3个...阅读全文

开源中国博客 2016-12-10 19:00:06 黑神领主

在Windows下编译golang

首先,我有一份1.7的版本安装在c:\go下。 由于看Go源码,有时候希望在一些库的实现中加点小改动。这样有利于理解。又下了一份代码解压在d:/go-devel/go目录下。 可以看看这个文件: file:///D:/go-devel/go/doc/install-source.html 由于作者要照顾各种情况下,啰嗦了。 编译一份新的go只需要做两件事情: 1 设置环境变量: GOROOT_BOOTSTRAP=c:/go CGO_EN...阅读全文

开源中国博客 2016-12-09 17:00:11 shengjuntu

go语言基本数据类型

初识GO语言 go是一门新语言,他在语言级提供了并发的支持(goroutine)和通信工具channel,同时它也是一门编译型、强类型的语言,拥有内存GC机制。程序的模块通过package来组织。 GO基础 整数 十进制整数,使用0-9的数字表示且不以0开头。 八进制整数,以0开头,0-7的数字表示 十六进制整数,以0X或者是0x开头,0-9|A-F|a-f组成 100 123455 0100 0600 0xff 0xFF12 浮点数 ...阅读全文

CSDN博客 2016-12-05 15:50 sydnash

个人对Golang中并发理解

个人觉得goroutine是Go并行设计的核心,goroutine是协程,但比线程占用更少。golang对并发的处理采用了协程的技术。golang的goroutine就是协程的实现。 十几个goroutine可能体现在底层就是五六个线程,Go语言内部帮你实现了这些goroutine之间的内存共享。执行goroutine只需极少的栈内存(大概是4~5KB),当然会根据相应的数据伸缩也就是说,当传输数据多的情况下占用量可能会高但是使用过后会...阅读全文

开源中国博客 2016-12-08 18:00:03 iderek718

TODO:Golang指针使用注意事项

TODO:Golang指针使用注意事项 先来看简单的例子1: 输出: 1 1 例子2: 输出: 1 3 例子1是使用值传递,Add方法不会做任何改变;例子2是使用指针传递,会改变地址,从而改变地址。 在看例子3: 输出: map[a:aa b:bb] map[b:world a:hello] 发现什么了,TestMap前面没有加*,没有用指针,怎么也会改变值呢?因为map提供键值功能,用起来像指针引用的类型。类似这种功能的类型还有,数组...阅读全文

开源中国博客 2016-12-08 14:00:05 OneTODO

Go 1.8的Plugins使用

Go 1.8为我们提供了一个创建共享库的新工具,称为Plugins!让我们来创建和使用一个插件。 目前的插件只能在Linux和Darwin上工作。 安装1.8beta1,不做说明. 创建一个插件方法到aplugin.go: package main func Add(x, y int) int { return x+y } func Subtract(x, y int) int { return x-y } 然后构建插件: 运行下面命令...阅读全文

开源中国博客 2016-12-06 20:00:02 vWay

go语言命令介绍

go语言相关命令: bulid命令: 编译文件或代码包,编译命令源码文件会生成可执行代码,编译库文件不会产生结果。 -a标记:强制编译所有涉及到的代码包 run命令: 运行命令源码文件(先编译再运行) 参数只能有一个命令源码文件 -n标记:打印编译过程中,所需要运行的命令,但不真正执行他们。 -p n标记:并行编译,n为数量。 -v标记:列出被编译的代码包的名称。 -a -v标记:列出所有被编译的代码包的名称。 -work标记:显示编译...阅读全文

开源中国博客 2016-12-06 12:00:01 昌琳
查看更多>>