V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  ryanking8215  ›  全部回复第 15 页 / 共 17 页
回复总数  324
1 ... 7  8  9  10  11  12  13  14  15  16 ... 17  
2014-06-06 17:21:56 +08:00
回复了 ryanking8215 创建的主题 Node.js 关于 promise 的一个问题
你好,问题就在这里,如果要发送N次,我就要在代码里写N次的Q.timeout(send(msg))。

现在我解决这个问题了,用递归。

一开始思路错了,想着让Q来解决问题,现在碰到超时,就用递归再调用send(msg)就好了,控制递归的结束条件,恩,如下所示:

function send(msg,timeout,defer){
if (timeout>4000) {
defer.reject(new Error("Timeout"))
return
}
// 如果超时了,就继续发送
var id = setTimeout(function({
self.send(msg,timeout*2,defer) // 超时后send again
}),timeout)

// 以下是发送和接收消息,要么defer.resolve(),要么defer.resolve()
}

function sendMsg(msg) {
var defer = Q.defer()
this.send(msg,500,defer)
return defer.promise
}
2014-05-21 21:14:52 +08:00
回复了 ganxiyun 创建的主题 程序员 企业 Web 开发用的 UI 库
话说 datatables.net 首页表格演示里的薪水和职位是不是真实的呀?
2014-05-21 17:08:04 +08:00
回复了 ryanking8215 创建的主题 程序员 ping 外网,网关设备转内网的问题
谢楼上2位,本意是想了解,没有五元组的ip包如何穿透NAT。
看来是具体情况具体分析,如icmp包,NAT会使用icmp里的type和id作为port,组成一个五元组。
另外一些如ESP等,只能在上面封一个ip+udp的头。
2014-05-21 11:20:50 +08:00
回复了 ryanking8215 创建的主题 程序员 ping 外网,网关设备转内网的问题
NAT大多说的是TCP,UDP的,网关出去时会映射port,可以根据ip:port来确定内网。之前做过p2p,学习过4类NAT。

有讲NAT的书,我记得哪里看到过蛮详细的,现在翻翻都不知道在哪本书上,请大伙指条明路
2014-05-07 08:44:06 +08:00
回复了 kurtis 创建的主题 程序员 个人对“情商高”的理解,仅是个人意见
个人意见,情商高指“面对各情况作出正确反应”,如何审视情况,如何作出反应,如何判断正确与否,就是情商。
2014-04-30 12:49:46 +08:00
回复了 ryanking8215 创建的主题 Markdown 大家推荐一个 markdown 的 parser 吧
谢谢各位,看了2楼的,原来pandoc有,没仔细看文档。
2014-04-13 21:23:19 +08:00
回复了 xcc7624 创建的主题 程序员 javascript 的 promise 模式,有什么典型的应用?
跑题了,ORM框架sequelizejs api就用了promise实现
2014-04-13 21:22:18 +08:00
回复了 xcc7624 创建的主题 程序员 javascript 的 promise 模式,有什么典型的应用?
nodejs里解决回调嵌套的方法有好多,promise,async,eventproxy,等等。后2者只是在局部范围内解决问题,但是promise是从根本上入手,支持promise,你就可以随心所欲的.then().then().fail(),整个项目,整个框架都可以用promise组织实现,要不promise怎么会有规范呢?
我觉得nodejs应该原生就支持promise,现在这样有点可惜。
2014-04-04 09:31:56 +08:00
回复了 XDA 创建的主题 程序员 还有需要 ATOM Invitation 的咩? 3 个
同求,[email protected], 网盘上有下载的0.60版,一升级就hang掉
2014-03-25 12:52:36 +08:00
回复了 ctoicqtao 创建的主题 Atom Atom 邀请三枚,要的留邮箱。
[email protected]
求一枚,谢谢!
我这边怎么排版有问题,我是ubuntu,chromium,Blog(Chinese),Blog(English)有些字被墙档了,变成Blog(Chin),Blog(Eng)这样的
2014-03-12 16:32:34 +08:00
回复了 ryanking8215 创建的主题 奇思妙想 把 lua 和 event loop 结合起来,是不是比 js 更给力
这个是golang的调度器实现的,具体的我也不懂了,没研究过。
2014-03-12 15:18:36 +08:00
回复了 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-03-12 14:02:01 +08:00
回复了 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-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在执行这里的时候,别的代码对这个没影响。难道是年纪大了?
1 ... 7  8  9  10  11  12  13  14  15  16 ... 17  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3871 人在线   最高记录 6543   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 25ms · UTC 10:29 · PVG 18:29 · LAX 03:29 · JFK 06:29
Developed with CodeLauncher
♥ Do have faith in what you're doing.