ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

事件循环

2022-06-18 03:02:28  阅读:181  来源: 互联网

标签:now crypto start 循环 事件 Date password


1. 事件循环的概念:

event loop is all the application code that is inside callback functions(non-top-top-level code)

2. 事件循环的步骤

强调的是两个另外的任务队列,他们执行的时机在每个主任务执行完成之后
image

3. 整个循环

这里强调的是整个事件循环的大层面,服务器启动,然后进入事件循环,执行完之后但是还是在监听是否有新的事件进入队列
image

4. 实践

image

这里为什么immediate会在setTimeout的前面,是因为事件循环的时候的轮询机制,根据执行的步骤,io操作之后的执行的是setImmediate,setTimeout是在下一轮循环的时候才会被查询到,所以先执行的是setImmediate。

5. 改变线程池的大小

一开始线程池中大概是四个线程

      const fs = require("fs");
      const crypto = require("crypto");
      
      const start = Date.now();
      
      fs.readFile("text-file.txt", () => {
      
        crypto.pbkdf2("password", "salt", 100000, 1024, "sha512", () => {
          console.log(Date.now() - start, "password encrypted");
        });
        crypto.pbkdf2("password", "salt", 100000, 1024, "sha512", () => {
          console.log(Date.now() - start, "password encrypted");
        });
        crypto.pbkdf2("password", "salt", 100000, 1024, "sha512", () => {
          console.log(Date.now() - start, "password encrypted");
        });
        crypto.pbkdf2("password", "salt", 100000, 1024, "sha512", () => {
          console.log(Date.now() - start, "password encrypted");
        });
      });

所以输出的结果差不多都是相同的时间完成的

image

增加了程序之后可以发现,4个之后的程序运行时间是成倍的

image

我们可以通过代码改变(windows上不行)

process.env.UV_THREADPOOL_SIZE = 10;

标签:now,crypto,start,循环,事件,Date,password
来源: https://www.cnblogs.com/kihyunBlog/p/16387552.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有