
没有用于文件 *** 作的异步API,因此node.js为此使用了线程池。您可以在libuv的代码中看到它。
该池可以运行4个线程:
static uv_thread_t default_threads[4];
阻塞的FS任务通过uv__work_submit发布。例如,以下是读取的实现方式:
int uv_fs_read(uv_loop_t* loop, uv_fs_t* req, uv_file file, void* buf, size_t len, int64_t off, uv_fs_cb cb) { INIT(READ); req->file = file; req->buf = buf; req->len = len; req->off = off; POST;}...#define POST do { if ((cb) != NULL) { uv__work_submit((loop), &(req)->work_req, uv__fs_work, uv__fs_done); return 0; } else { uv__fs_work(&(req)->work_req); uv__fs_done(&(req)->work_req, 0); return (req)->result; } } while (0)如果您想实现自己的线程,可以查看此精彩介绍。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)