2 qq 34043294 qq_34043294 于 2016.03.30 00:17 提问

新手golang 递归goroutine的问题 50C

碰到个问题,要求是用产生n个goroutine形成chain形,即一个goroutine内再产生goroutine,奇数个输出ping,偶数个输出pong。我的想法是用递归来做,但是网上资料很少,对于golang的function也不太了解。求帮助

2个回答

devmiao
devmiao   Ds   Rxr 2016.03.30 07:02
oyljerry
oyljerry   Ds   Rxr 2016.03.30 13:32

goroutine是协程。它可以直接启动n个,如果要chain,需要做同步处理

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
区块链信用证项目:golang内存泄漏,goroutine泄漏排查
一、pprof的使用 pprof的启动及操作 import net/http/pprof go func() { http.ListenAndServe("0.0.0.0:11181", nil) }() 然后通过网页打开即可:http://192.168.9.78:11181/debug/pprof/ pprof的一些操作: go to
Golang -- goroutine (一)
介绍goroutine是Go并行设计的核心。goroutine说到底其实就是线程,但是它比线程更小,十几个goroutine可能体现在底层就是五六个线程,Go语言内部帮你实现了这些goroutine之间的内存共享。执行goroutine只需极少的栈内存(大概是4~5KB),当然会根据相应的数据伸缩。也正因为如此,可同时运行成千上万个并发任务。goroutine比thread更易用、更高效、更轻便。
golang的goroutine调度机制
一直对goroutine的调度机制很好奇,最近在看雨痕的golang源码分析, 感觉豁然开朗,受益匪浅; 去繁就简,再加上自己的一些理解,整理了一下 ~~ 调度器 主要基于三个基本对象上,G,M,P(定义在源码的src/runtime/runtime.h文件中) 1.     G代表一个goroutine对象,每次go调用的时候,都会创建一个G对象 2.     M 代表一个线程,
GOLANG使用Context管理关联goroutine
原文:https://gocn.io/article/333一般一个业务很少不用到goroutine的,因为很多方法是需要等待的,例如http.Server.ListenAndServe这个就是等待的,除非关闭了Server或Listener,否则是不会返回的。除非是一个API服务器,否则肯定需要另外起goroutine发起其他的服务,而且对于API服务器来说,在http.Handler的处理函数中
golang技术随笔(二)理解goroutine
进程、线程和协程要理解什么是goroutine,我们先来看看进程、线程以及协程它们之间的区别,这能帮助我们更好的理解goroutine。进程:分配完整独立的地址空间,拥有自己独立的堆和栈,既不共享堆,亦不共享栈,进程的切换只发生在内核态,由操作系统调度。 线程:和其它本进程的线程共享地址空间,拥有自己独立的栈和共享的堆,共享堆,不共享栈,线程的切换一般也由操作系统调度(标准线程是的)。 协程
[转]Golang中goroutine的调度器详解
goroutine是golang的一大特色,本文详细讲述背后调度的相关机制和原理。
golang-并发编程goroutine
服务器程序提高并发的方式: 多进程、多线程模型,这种模式现在基本不用 使用多路复用(如actor模式的epoll、proactor模式的iocp等)+ 回调的结构,这种模型不仅不符合人的顺序思维习惯,而且容易出错。使用协程(轻量级线程,创建、销毁的代价很小),协程在逻辑上上顺序执行。 为什么要介绍服务器的模型呢? 因为golang的goroutine就是协程。 现在有很多编程语言都有相
golang工作者goroutine池模型
在golang编写服务程序过程中,如果每次来斗启动一个goroutine去处理任务,处理一个任务后就退出,这样势必会造成资源浪费。构建一个工作goroutine池来处理任务相对资源利用会少些,具体的情况需对比测试。 列表内容 type WorkerPool struct { tasks <-chan *string //任务队列长度 poolSize int
golang使用pprof检查goroutine泄露
有一段时间,我们的推送服务socket占用很不正常,我们自己统计的同时在线就10w的用户,但是占用的socket竟然达到30w,然后查看goroutine的数量,发现已经60w+。 每个用户占用一个socket,而一个socket,有read和write两个goroutine,简化的代码如下: c, _ := listerner.Accept() go c.run() func (c
Golang中不要使用无限循环检查goroutine是否完成工作
在使用goroutine时,我们经常会写出这样的代码: