什么是阻塞函数或阻塞调用?
这是我在提到 Node.js 或实时处理语言时反复看到的一个术语。
最佳答案
一个停止脚本执行直到结束的函数。
例如,如果我有一个用我的语言编写的用于写入文件的函数,如下所示:
fwrite(file, "Contents");
print("Wrote to file!");
print
语句只会在文件写入磁盘后执行。整个程序在这条指令上暂停。这对于足够小的写入并不明显,但想象一下我有一个巨大的 blob 要写入文件,这需要几秒钟:
fwrite(file, blob);
print("Wrote to file!");
print
语句只会在写入几秒钟后执行,而整个程序将在这段时间内停止。在 Node.js 中,这些工作是 异步 完成的,使用 事件 和 回调。我们的例子会变成:
fwrite(file, blob, function() {
print("Wrote to file!");
});
print("Do other stuff");
其中第三个参数是文件写入后要调用的函数。位于 write 函数之后的 print
语句将在之后立即调用,无论文件是否已被写入。因此,如果我们要编写一个足够大的 blob,输出可能如下所示:
Do other stuff
Wrote to file!
这使得应用程序非常快速,因为您无需等待客户端消息、文件写入或其他。您可以继续以并行方式处理数据。这是 Node.js 的许多优势之一。
关于node.js - 什么是阻塞函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7407165/