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://tech.uc.cn/?p=1055​

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