[Go 语言]第一次用大量的并发逻辑写程序 有点烧脑

2015-08-31 08:47:08 +08:00
 ljbha007

昨天学习了一下 Go 语言 发现 Go 的强大之处
最后做官网的 go tour 给的最后一道练习题时 被并发逻辑搞得很头疼 脑子有点转不过来
以前用 Java 也经常写线程同步的东西 但是没有到“每个函数调用都用并发”的程度
再加上递归的逻辑 顿时脑袋有点要爆炸的感觉
还好最后还是绕出来了
贴一个我自己的实现的代码

根据我的经验这种问题应该是编程思想还没有转变 转变之后应该就不会那么烧脑了 各位 V 友有没有那么觉得?

3770 次点击
所在节点    Go 编程语言
38 条回复
ljbha007
2015-08-31 08:48:38 +08:00
https://gist.github.com/CarlLee/24cb7c03f88b09b4a6c2

主题里贴没有语法高亮 改用回复帖 gist
Debugs
2015-08-31 08:53:53 +08:00
没用过
starAsh
2015-08-31 09:19:16 +08:00
写的都很费劲,别提读了
shadowind
2015-08-31 09:56:15 +08:00
使用 goroutine 和 channel 玩递归,有意思啊~
scys
2015-08-31 10:27:41 +08:00
看着 Gist 一行行出来
hanwujibaby
2015-08-31 10:34:05 +08:00
用的 go 的哪个版本?
passluo
2015-08-31 10:36:55 +08:00
话说你是之前做外包坑我们的那个么 =。=

看头像很像啊……
yqf3139
2015-08-31 10:54:11 +08:00
这样递归太费资源了吧, chan 做 url 的队列,起定数的 goroute 就行了
ljbha007
2015-08-31 12:00:12 +08:00
@passluo
是 实在不好意思

@yqf3139
那就没办法记递归层数了啊 另外建个 struct 把 url 和层数一起传?
ljbha007
2015-08-31 12:00:37 +08:00
@hanwujibaby
官网的教程里的 不知道版本
ForgotFun
2015-08-31 12:57:16 +08:00
@passluo 哈哈 遇到仇人了
yaoyao1158
2015-08-31 13:03:56 +08:00
@passluo 前来围观……
u926262
2015-08-31 13:38:00 +08:00
@passluo 求细节
yqf3139
2015-08-31 13:46:48 +08:00
@ljbha007 可以传递自定义的结构体的,不过这样的话可能 chan 的缓冲到极限后,可能会都死在向 chan 推的动作中.极限要取大点,或者再自己弄个队列.
0987363
2015-08-31 13:50:00 +08:00
为嘛不用 chan 来传,简单省事,一端写 url ,一端大量 goroutine 池,一个 chan 太慢就多开几个,简单省事
ljbha007
2015-08-31 13:55:45 +08:00
@yqf3139
其实性能上就是内存稍微会多一点 其他没什么影响啊
ljbha007
2015-08-31 13:57:04 +08:00
@ForgotFun
@yaoyao1158
@u926262

之前一起做了个电商的网站 完成 80%左右烂尾了
akira
2015-08-31 14:03:01 +08:00
@ljbha007 一般来说,完成度到 90%的时候,是完成了一半的工作量
hxtheone
2015-08-31 14:08:13 +08:00
@passluo 友情围观,汽水瓜子已备好~
JungleHi
2015-08-31 14:16:49 +08:00
我们公司之前也有个项目外包 http://v2ex.com/t/155956 V2EX 上没有合适的 老板后来叫他朋友做 然后... 现在不知道他们还是不是朋友了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/217220

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX