V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  ryanking8215  ›  全部回复第 16 页 / 共 17 页
回复总数  330
1 ... 8  9  10  11  12  13  14  15  16  17  
2014-03-12 13:17:41 +08:00
回复了 ryanking8215 创建的主题 奇思妙想 把 lua 和 event loop 结合起来,是不是比 js 更给力
@clino goroutine和lua的coroutine还有gevent等这种协程是不同的概念。
协程生成在哪个线程上,就在哪个线程进行上下文切换,

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

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

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

我靠,真有这玩意儿,还说比node.js快2~4倍。
2014-03-10 08:50:19 +08:00
回复了 nooper 创建的主题 程序员 你为什放弃了一个编程语言而去做另外一个编程语言?
嵌入式c/c++,做过点android,懂点java,项目需要要做web和server,果断投入javascript大家庭。本来server选golang的,nodejs和golang对我来说都是新的,都一样,但是为了少学一门,就用nodejs了.
2014-03-02 12:11:46 +08:00
回复了 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-02-12 09:02:09 +08:00
回复了 unnya 创建的主题 奇思妙想 东莞被封之后的线上转移
@laskuma 那是"IT嫖客",不过这个作为网名不错
2014-01-29 08:59:00 +08:00
回复了 foursking 创建的主题 问与答 求好用的vim colorscheme cli下
我一直用lucius,有dark and light,比较养眼
2014-01-27 10:53:43 +08:00
回复了 ryanking8215 创建的主题 程序员 restful用get获取资源,需要认证信息的,怎么搞呢?
用header是不是就不标准了?需要自定义header?
2014-01-27 09:51:05 +08:00
回复了 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呢?又免费,又有版本管理
2013-12-10 16:31:42 +08:00
回复了 daiv 创建的主题 Python sqlite 3 很容易被破坏呀,有没有解决办法?
嵌入式设备上用的sqlite3,也有这个现象,直接断电后特别容易出来。
修复文件系统后一般不会出现malformed,出现的话用楼主的方法修复一下
2013-11-28 17:29:27 +08:00
回复了 ryanking8215 创建的主题 Node.js 关于回调中的对象如何和自己创建的对象联系起来
额,是不是通过闭包就可以了?

ws.on("connection",function(ws) {
conn = new Conn(ws)
ws.on("message",function("message") {
conn.handleMessage(message);
})
})
1 ... 8  9  10  11  12  13  14  15  16  17  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3420 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 28ms · UTC 00:47 · PVG 08:47 · LAX 16:47 · JFK 19:47
Developed with CodeLauncher
♥ Do have faith in what you're doing.