当前位置: 首页 > news >正文

php大型网站开发前端开发和后端开发

php大型网站开发,前端开发和后端开发,wordpress插件大全,网站开发与应用 答案nodejs的核心之一就是非阻塞的异步IO#xff0c;于是想知道它是怎么实现的#xff0c;挖了下nodejs源码#xff0c;找到些答案#xff0c;在此跟大家分享下。首先#xff0c;我用了一段js代码test-fs-read.js做测试#xff0c;代码如下#xff1a; var path require(pa…nodejs的核心之一就是非阻塞的异步IO于是想知道它是怎么实现的挖了下nodejs源码找到些答案在此跟大家分享下。首先我用了一段js代码test-fs-read.js做测试代码如下 var path require(path),  fs require(fs),  filepath path.join(__dirname, experiment.log),  fd fs.openSync(filepath, r);    fs.read(fd, 12*1024*1024, 0, utf-8, function(err, str, bytesRead) {      console.log([main thread] execute read callback);  });  console.log([main thread] execute operation after read); 这段代码的异步IO操作就在fs.read的调用上读取的experiment.log是一个12M的文本文件所谓的异步大家大概能想得到运行时会先打印 [main thread] execute operation after read 然后打印回调函数中的 [main thread] execute read callback 但大家也许还听说过nodejs是单线程的那又是怎么实现异步IO的呢读文件操作是在哪里执行的呢读完又是怎么调用回调函数的呢猜想读文件可能是在另一个线程中完成的读完后通过事件通知nodejs执行回调。为了一探究竟debug了一把nodejs和libeio源码重新编译后运行测试代码node test-fs-read.js输出如下   可以看到nodejs的IO操作是通过调用libeio库完成的debug从fs.read开始js代码经过v8编译后fs.read会调用node_file.cc中的Read方法测试代码的运行经历了以下步骤 1 node_file.cc中的Read方法调用libeioeio.c的eio_read read请求被放入请求队列req_queue中。 2 主线程创建了1个eio线程此时主线程的read调用返回。 3 eio线程从req_queue中取出1个请求开始执行read IO 4 主线程继续执行read调用后的其它操作。 5 主线程poll eio从响应队列res_queue取已经完成的请求此时res_queue为空主线程stop poll 6 eio线程完成了read IOread请求被放入响应队列res_queue中并且向主线程发送libev事件want_poll通过主线程初始化eio时提供的回调函数。 7 eio线程从req_queue中取下一个请求此时已经没有请求。 8 主线程响应want_poll事件从res_queue中取出1个请求取出请求后res_queue变为空主线程发送done_poll事件。 9 主线程执行请求的callback函数。 还需要说明的是当同时有多个IO请求时主线程会创建多个eio线程以提高IO请求的处理速度。 为了更清晰的看到nodejs的IO执行过程图示如下序号仅用来标示流程与上述步骤序号并无对应关系。 最后总结几条不当之处还请大家指正。1 nodejs通过libev事件得到IO执行状态而不是轮询提高了CPU利用率。 2 虽然nodejs是单线程的但它的IO操作是多线程的多个IO请求会创建多个libeio线程最多4个使通常情况的IO操作性能得到提高。3 但是当IO操作情况比较复杂的时候有可能造成线程竞争状态导致IO性能降低而且libeio最多创建4个线程当同时有大量IO请求时实际性能有待测量。另外由于每个IO请求对应一个libeio的数据结构当同时有大量IO操作驻留在系统中时候会增加内存开销。4 Libeio为了实现异步IO功能带来了额外的管理当IO数据量比较小的时候整体性能不一定比同步IO好。
http://www.hkea.cn/news/14273570/

相关文章:

  • 深圳网站域名注册wordpress大前端4.1
  • 网站做记录访客在服务器网站上做跳转
  • 毕业设计做网站怎样的工作量算达标咸阳商城网站开发设计
  • 怎么进行网站推广园林景观网站源码
  • 网站备案承诺书填写python 网站开发神器
  • 丹东做网站的网站建设和管理维护
  • ftp上传网站后怎么弄陕西seo关键词优化外包
  • 网络推广的网站有哪些网站建设宽度一般都是多少
  • 网站先做前端还是后台腰椎间盘突出压迫神经腿疼怎么治疗
  • jsp可以做网站吗网站做的好不好数据
  • 网站建设及发布的流程图宁波seo企业推广
  • 网站建设的图片中国制造加工网官网
  • dede网站地图标签大学生实训网站建设心得
  • 创建网站宝典广州市网站建设科技公司
  • 企业网站建设费用会计科目php中网站搜索功能实现
  • 局域网做网站 内网穿透wordpress模板 简约
  • 企业网站本身应该就是企业( )的一部分软件界面设计素材
  • 网站开发管理过程千库网素材免费下载官方
  • 建设银行北海分行网站免费做logo网站
  • 青海省住房和城乡建设部网站免费的网站软件下载
  • 贵阳网站制作方舟网络软件界面设计ui培训班
  • 网站建设招聘兼职县文化馆网站建设方案
  • 校园网站建设调研ui交互设计做什么
  • 地信网站建设做网站的销售好做吗
  • 全球搜网站结构优化
  • 开发网站的空间分录和嗲囡囡和做的网站
  • 建设厅考试网站在线h5制作工具
  • 青岛手机端建站模板wordpress 添加语言
  • 上海外贸网站推广哪家好html简单网页模板
  • 广东省建设八大员网站湖南省建设厅证件查询