看过好几遍了,觉得挺实用的,记录备忘一下。1.开启很多个goroutine 之后,等待执行完毕type WaitGroupWrapper struct { sync.WaitGroup}func (w *WaitGroupWrapper) Wrap(cb func()) { w.Add(...
分类:
其他好文 时间:
2015-03-10 15:26:09
阅读次数:
172
进程、线程和协程要理解什么是goroutine,我们先来看看进程、线程以及协程它们之间的区别,这能帮助我们更好的理解goroutine。进程:分配完整独立的地址空间,拥有自己独立的堆和栈,既不共享堆,亦不共享栈,进程的切换只发生在内核态,由操作系统调度。
线程:和其它本进程的线程共享地址空间,拥有自己独立的栈和共享的堆,共享堆,不共享栈,线程的切换一般也由操作系统调度(标准线程是的)。
协程...
分类:
其他好文 时间:
2015-03-05 22:26:19
阅读次数:
386
初识golang,这部分也不是很了解,百度了一下,做个小记录goroutine是golang用来做并发处理的,使用起来很简单 go func(){...}(),就是看起来随便用一般而容易go的滥用,所以使用时要仔细斟酌才好。channel 大约是用来在线程间传递数据的,主线程开通一个channel,...
分类:
其他好文 时间:
2015-03-04 14:32:48
阅读次数:
163
我们可以使用Channel来同步不同goroutines的执行。看下面的代码:package main import "fmt"import "time" //这个函数会在新的goroutine中运行,执行结束时会给done channel中传入值true//注意到中间有sleep了一秒func w...
分类:
其他好文 时间:
2015-03-04 11:01:13
阅读次数:
157
开启了多个协程 其中一个协程满足条件后终止select, 原以为其他的协程会在后台系统中继续悄悄运行 直到主进程关闭而关闭 。做一实验发现select 监听退出 会关闭所有监听的goroutinepackage mainimport ( "fmt" "time")var stop boo...
分类:
其他好文 时间:
2015-01-16 19:07:56
阅读次数:
255
golang并发编程 - 例子解析February 26, 2013最近在看《Programming in Go》, 其中关于并发编程写得很不错, 受益非浅, 其中有一些例子是需要多思考才能想明白的, 所以我打算记录下来, 强化一下思路《Programming in Go》在Chapter 7. C...
分类:
其他好文 时间:
2015-01-06 19:48:16
阅读次数:
191
这两天有些闲功夫, 学习下golang, 确实非常简洁.不过有些缺憾. 在我的测试中. golang的调度(goroutine)似乎不是非常好.func say(k int) { fmt.Println(k)}func main() { runtime.GOMAXPROCS(2)...
分类:
其他好文 时间:
2014-12-28 01:47:04
阅读次数:
194
1、并行通过使用goroutine和channel,go语言可以很好地支持并发,但是在我的电脑上是默认只使用一个核执行,要使用多核,在代码前面加入import("runtime")var MULTICORE int = runtime.NumCPU() //CPU数runtime.GOMAXPROC...
分类:
编程语言 时间:
2014-12-26 20:15:17
阅读次数:
202
并发goroutinegoroutine 是 Go 并行设计的核心。goroutine 说到底其实就是线程,但是他比线程更小,十几个 goroutine 可能体现在底层就是五六个线程,Go 语言内部帮你实现了这些 goroutine之间的内存共享。执行 goroutine 只需极少的栈内存(大概是 ...
分类:
其他好文 时间:
2014-12-24 18:00:56
阅读次数:
178
Akka/Erlang的actor模型与Go语言的协程Goroutine与通道Channel代表的CSP(Communicating Sequential Processes)模型有什么区别呢?
首先这两者都是并发模型的解决方案,我们看看其定义和实现方式:
Actor模型描述了一组为了避免并发编程的常见问题的公理:
1.所有Actor状态是Actor本地的,外部无法访问。
...
分类:
其他好文 时间:
2014-12-18 17:02:22
阅读次数:
656