【发布时间】:2015-03-12 02:12:10
【问题描述】:
我希望能够采用不接受回调的函数并确定它是否会异步执行。
特别是,我正在使用 mraa 在 Intel Edison 上使用 Node.js,它具有原生 C++ 实现的函数,例如不接受回调的 i2c.readReg(address)。
- 如何确定某个函数是否正在阻塞处理器以供其他系统进程使用?
- 如何确定其他 JS 是否可以在此期间运行?
或者我什至没有以正确的方式接近这个?
【问题讨论】:
-
你不能这样做。要知道这是否是正确的方法,我们必须知道你正在接近什么。为什么需要以编程方式进行?
-
通过以编程方式进行,我在进行回调功能请求或拉取之前进行研究。如果它是一个非阻塞函数调用(因为它深入到一些系统级函数),那么可能真的不需要回调。
-
如果是纯 JS 那么你可能会检查返回的值是否是一个承诺。但是,由于您使用的是本机函数,这可能是不可能的。因此,我必须选择@minitech。您无法以编程方式确定函数是否是异步的。
-
我的假设是 C/C++ 代码总是阻塞,如果你想要异步,那么你必须使用
fork/join或其他形式的线程。如果是这样,那么我会假设您的所有本机 C++ 函数都是同步的,因为异步性将由 C++ 代码本身内的fork/join处理(即,在异步操作完成之前它不会返回)。我说的对吗? -
@AaditMShah - C/C++ 并不总是阻塞。例如,Win32 API 中有非阻塞 IO。 Socket IO 早就有了在所有平台上使用的非阻塞方式。
标签: javascript node.js asynchronous intel-edison