nodejs基于fibers实现同步

function demo(key, value) {    
    var fiber = Fiber.current;    
    client.set(key, value, function(err, reply){    
        fiber.run();    
    });    
    Fiber.yield();    
}    

这里首先用Fiber函数来建立一个需要在同步作用域中执行的函数,接着在需要异步执行的地方(client.set())之前,首先var fiber = Fiber.current;用于获取当前的执行域,然后挂起回调,

接着是:Fiber.yield();,这句话的作用可以理解为阻塞当前的执行域,并释放cpu,这样就为刚刚挂起的回调提供了cpu了,

当回调执行完后fiber.run();用于使yield返回.

 

运行轨迹:

----Fiber.current

----client.set()----

----等待回调,继续往下只Fiber.yield(),阻塞纤程

----回调完成 fiber.run(); 

----执行Fiber.yield()后被阻塞的部分

 

 

并发编程学习总结:http://blog.csdn.net/chgaowei/article/details/7237673

 

协程实现的基础:http://tech.uc.cn/?p=1055

协程的定义与分类:http://ravenw.com/blog/2011/08/24/coroutine-part-1-defination-and-classification-of-coroutine/

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值