V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
V2EX  ›  ryanking8215  ›  全部回复第 16 页 / 共 17 页
回复总数  332
1 ... 8  9  10  11  12  13  14  15  16  17  
2014 年 3 月 12 日
回复了 ryanking8215 创建的主题 奇思妙想 把 lua 和 event loop 结合起来,是不是比 js 更给力
@clino 他说的是对的,第一段的“同时,这个线程数和 runtime.GOMAXPROCS 也没有直接关联。在这个情况下,虽然 runtime.GOMAXPROCS 设为了 2 ,但是最后照样用了 1000 多个线程。”,这句话没错,但是本来这2个就没有关系,并发和并行是2个概念,一个cpu可以通过开启n多个线程/进程并发或使用多个协程并发或使用event_loop并发,但不是并行计算,因为只有一个cpu,多个cpu参与就可以并行计算,多线程/多进程模型可以支持并行,但协程和event_loop就不支持了。

第二段说的包装io,libuv就封装了异步的io,是通过线程来实现的,毕竟filesystem io是block的。

goroutine把并发和并行结合了起来,而且不造成过多负担,模型一致。

我这样理解的并发(cocurrency)和并行(parallel):并发是逻辑上的“并发”,并行是物理上的“并发”。
2014 年 3 月 12 日
回复了 ryanking8215 创建的主题 奇思妙想 把 lua 和 event loop 结合起来,是不是比 js 更给力
@clino http://golang.org/pkg/runtime/#GOMAXPROCS, 是设置多少个cpu参与并行,而不是线程数。

这篇东西完全在误导!

我刚才试了了一下:
func main() {
<- time.After(5*time.Minute)
}
简单的定时器,golang帮我开了5个线程,包括主线程,通过ls /proc/<pid>/task/查看
2014 年 3 月 12 日
回复了 ryanking8215 创建的主题 奇思妙想 把 lua 和 event loop 结合起来,是不是比 js 更给力
@clino goroutine和lua的coroutine还有gevent等这种协程是不同的概念。
协程生成在哪个线程上,就在哪个线程进行上下文切换,

但在golang里没有线程的概念,goroutine的这种设计屏蔽了操作系统的线程,目前的并发是使用线程来实现的,m个goroutine跑在n个线程上(m>=n),当你起goroutine时,golang的调度器负责将goroutie分配给已有线程或者新建线程。

你可以安装golang跑个例子看看
2014 年 3 月 12 日
回复了 ryanking8215 创建的主题 奇思妙想 把 lua 和 event loop 结合起来,是不是比 js 更给力
@clino 我看了一下gevent,我同意你的说法。我的理解是从资源保护上讲,是不需要锁的,因为gevent的cpu是用户显示释放的,不是OS调度的,没有临界区的问题,但是你要同步gevent,控制gevent的执行顺序,就需要信号量和锁了。

但是你说的关于goroutine的,我不太认同,goroutine是go runtime的调度器调度的,什么时候切换goroutine是自动的,不是用户控制的,如果没有互斥和同步原语,我觉得是有临界区问题的。我不清楚如何起n个gorouine是保证在一个线程上的。
2014 年 3 月 12 日
回复了 ryanking8215 创建的主题 奇思妙想 把 lua 和 event loop 结合起来,是不是比 js 更给力
@clino 单线程单进程的event loop不需要锁,我确定。你说几种语言的coroutine的,我不是了解很多语言,单从lua讲,是单线程内执行的协程,不需要锁。 至于goroutine,是多线程支撑的CSP模型,需要锁的,它也提供的sync.Mutex,sync.Atomic,当然它提供更方便的chan是另一说了
2014 年 3 月 12 日
回复了 ryanking8215 创建的主题 奇思妙想 把 lua 和 event loop 结合起来,是不是比 js 更给力
@clino 你指lua的coroutine吗?lua不是很熟悉,但我记得是没有锁啊
2014 年 3 月 11 日
回复了 ryanking8215 创建的主题 奇思妙想 把 lua 和 event loop 结合起来,是不是比 js 更给力
@clino 用了单进程单线程的eventloop,那就不用锁了,就不会有死锁了。死锁不是因为同步写的原因,是因为要并发,临界区资源需要互斥,有资源需要同步访问,也有可能多个任务需要协调同步等等,就有锁的问题,一不小心就会死锁,其实死锁还好,万一临界区资源被无故改写,这个问题很难查,很难重现。
2014 年 3 月 11 日
回复了 ryanking8215 创建的主题 奇思妙想 把 lua 和 event loop 结合起来,是不是比 js 更给力
我不觉得event loop很恶心啊,嵌入式上一直用libevent。
最近觉得多线程会造成心智负担,担心死锁的问题。包括goroutine。
callback嵌套多点就多点吧,不是还有async,eventproxy么?至少我知道cpu在执行这里的时候,别的代码对这个没影响。难道是年纪大了?
2014 年 3 月 11 日
回复了 ryanking8215 创建的主题 奇思妙想 把 lua 和 event loop 结合起来,是不是比 js 更给力
golang也是同步的啊

我靠,真有这玩意儿,还说比node.js快2~4倍。
2014 年 3 月 10 日
回复了 nooper 创建的主题 程序员 你为什放弃了一个编程语言而去做另外一个编程语言?
嵌入式c/c++,做过点android,懂点java,项目需要要做web和server,果断投入javascript大家庭。本来server选golang的,nodejs和golang对我来说都是新的,都一样,但是为了少学一门,就用nodejs了.
2014 年 3 月 2 日
回复了 ryanking8215 创建的主题 程序员 golang 里 xml 的处理问题
谢谢,不过昨天晚上看纸牌屋的时候突然想到,可以使用pointer,再加上ommitempty的tag属性
如:
type Message struct {
Rsp *Response `xml:"rsp,ommitempty"`
Req *Resquest `xml:"req,ommitempty"`
}
这样在marshal的时候填所需要的成员即可。

按照我理解,在unmarshal的时候,由于是pointer,会碰到运行时错误,但是竟然也unmarshal正确了,xml包会自动帮我new struct吗?
2014 年 2 月 12 日
回复了 unnya 创建的主题 奇思妙想 东莞被封之后的线上转移
@laskuma 那是"IT嫖客",不过这个作为网名不错
2014 年 1 月 29 日
回复了 foursking 创建的主题 问与答 求好用的vim colorscheme cli下
我一直用lucius,有dark and light,比较养眼
2014 年 1 月 27 日
回复了 ryanking8215 创建的主题 程序员 restful用get获取资源,需要认证信息的,怎么搞呢?
用header是不是就不标准了?需要自定义header?
2014 年 1 月 27 日
回复了 lucky9805 创建的主题 问与答 说说自己的春节计划吧
学习golang,做个golang小项目
我错了。
Block objects are a C language feature introduced in OS X v10.6 and iOS 4.0 that are similar to function pointers conceptually, but have some additional benefits.
block不是objc扩展出来的吗?ansi-c没有block的概念啊,为什么说__block是c-extension呢?
不懂。
既然和官网一个价,为啥要去香港买呢?
为什么不放github呢?又免费,又有版本管理
1 ... 8  9  10  11  12  13  14  15  16  17  
About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3546 Online   Highest 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 23ms · UTC 04:39 · PVG 12:39 · LAX 21:39 · JFK 00:39
♥ Do have faith in what you're doing.