异步编程的前世今生,返回的错误码为998

亚洲必赢76net的主页 2

亚洲必赢76net的主页 1

众所周知javascript是单线程的,它的设计之初是为浏览器设计的GUI编程语言,GUI编程的特性之一是保证UI线程一定不能阻塞,否则体验不佳,甚至界面卡死。

请问大神,我创建完成端口时,返回的句柄为0x000000fc,并将其传入getqueuedcompletionstatus的第一个参数,执行getqueuedcompletionstatus函数后,程序不行阻塞在那里等待io操作完成,而是直接向下执行了,调用getlasterror发现getqueuedcompletionstatus返回的错误代码是998,请大神指点一下,这是什么原因?

所谓”单线程”,就是指一次只能完成一件任务。如果有多个任务,就必须排队,前面一个任务完成,再执行后面一个任务,以此类推。

亚洲必赢76net的主页 2

什么叫异步?

  • 亚洲必赢76net的主页,所谓异步简单说就是一个任务分成两段,先执行一段,转而执行其他任务,等做好了准备转而执行第二段。

以下是当有ABC三个任务,同步或异步执行的流程图:

同步

> thread ->|----A-----||-----B-----------||-------C------|

异步

A-Start ---------------------------------------- A-End   
           | B-Start ----------------------------------------|--- B-End   
           |   |     C-Start -------------------- C-End      |     |   
           V   V       V                           V         V     V      
  thread-> |-A-|---B---|-C-|-A-|-C-|--A--|-B-|--C--|---A-----|--B--|
异步编程时就需要指定异步任务完成后需要执行的指令,异步的发展历程如下:
  1. 回调函数
  2. Promise
  3. Generator
  4. co
  5. async,await

下面会一步一步展现各种方式。

发表评论

电子邮件地址不会被公开。 必填项已用*标注