Node.js 异步\u ID是否可能溢出?
在node.js中,当执行本质上异步的操作时,会为其生成一个Node.js 异步\u ID是否可能溢出?,node.js,asynchronous,integer-overflow,async-hooks,Node.js,Asynchronous,Integer Overflow,Async Hooks,在node.js中,当执行本质上异步的操作时,会为其生成一个async\u id。此id可通过async\u hooksAPI访问 由于ID是整数(64位),它们有可能在某个时候溢出吗 ID重置的唯一原因似乎是出现异常时。 我还没有深入研究Node.JS代码,对于这个答案,我假设那些async\u id是从0开始生成并向上生成的。如果负值也出现在等式中,这会变得更疯狂 当您有64位(int)来存储一个值时,您有2^63=9223372036854775808~=9.22e+18可能的正值(包括0
async\u id
。此id可通过async\u hooks
API访问
由于ID是整数(64位),它们有可能在某个时候溢出吗
ID重置的唯一原因似乎是出现异常时。
我还没有深入研究Node.JS代码,对于这个答案,我假设那些
async\u id
是从0开始生成并向上生成的。如果负值也出现在等式中,这会变得更疯狂
当您有64位(int)来存储一个值时,您有2^63=9223372036854775808~=9.22e+18可能的正值(包括0)
这意味着在程序运行时,可能要创建的异步索引的数量
让我们假设一个极端情况,在这种情况下,您的程序每秒创建10亿个异步操作,并连续运行100年(这两种情况几乎都不可能):
- 100年=3153600000~=3.15e+9秒
- 100000000异步操作*3153600000秒=31536000000000~=3.15e+18
希望这能有所帮助。我还没有深入研究Node.JS代码,对于这个答案,我将假设那些
异步id
是从0开始生成的,并且一直在上升。如果负值也出现在等式中,这会变得更疯狂
当您有64位(int)来存储一个值时,您有2^63=9223372036854775808~=9.22e+18可能的正值(包括0)
这意味着在程序运行时,可能要创建的异步索引的数量
让我们假设一个极端情况,在这种情况下,您的程序每秒创建10亿个异步操作,并连续运行100年(这两种情况几乎都不可能):
- 100年=3153600000~=3.15e+9秒
- 100000000异步操作*3153600000秒=31536000000000~=3.15e+18