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/