This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| require('fibers'); | |
| var fs = require('fs'); | |
| function resumer() { | |
| var fiber = Fiber.current; | |
| return function(err, val) { | |
| if (err) { | |
| fiber.throwInto(err); | |
| } else { | |
| fiber.run(val); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| diff --git a/src/coroutine.cc b/src/coroutine.cc | |
| index e1d8908..265faf4 100644 | |
| --- a/src/coroutine.cc | |
| +++ b/src/coroutine.cc | |
| @@ -42,7 +42,10 @@ static pthread_key_create_t& dyn_pthread_key_create(); | |
| * the original implementation but that doesn't work because dlsym() tries to get a lock which ends | |
| * up calling pthread_getspecific and pthread_setspecific. So have to implement our own versions of | |
| * these functions assuming one thread only and then as soon as we can, put all that saved data into | |
| - * real TLS. | |
| + * a better structure. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| $ cat adapter.js | |
| require('./node-fibers'); | |
| var print = require('util').print; | |
| // This function runs an asynchronous function from within a fiber as if it | |
| // were synchronous. | |
| function asyncAsSync(fn /* ... */) { | |
| var args = [].slice.call(arguments, 1); | |
| var fiber = Fiber.current; |
NewerOlder