napi_create_threadsafe_function


NAPI_EXTERN napi_status
napi_create_threadsafe_function(napi_env env,
                                napi_value func,
                                napi_value async_resource,
                                napi_value async_resource_name,
                                size_t max_queue_size,
                                size_t initial_thread_count,
                                void* thread_finalize_data,
                                napi_finalize thread_finalize_cb,
                                void* context,
                                napi_threadsafe_function_call_js call_js_cb,
                                napi_threadsafe_function* result); 
  • [in] env:API 被调用时所处的环境。
  • [in] func:一个可选的 JavaScript 函数,可从另一个线程调用。如果将 NULL 传递给 call_js_cb,则必须提供此函数。
  • [in] async_resource:与异步工作关联的可选对象,将被传递给可能的 async_hooks init 钩子
  • [in] async_resource_name:一个 JavaScript 字符串,用于提供标识符,表示由 async_hooks API 暴露的诊断信息所提供的资源类型。
  • [in] max_queue_size:队列的最大大小。0表示无限制。
  • [in] initial_thread_count:初始获取的数量,即将使用此函数的线程的初始数量,包括主线程。
  • [in] thread_finalize_data:可选数据,将传递给 thread_finalize_cb
  • [in] thread_finalize_cb:销毁 napi_threadsafe_function 时可调用的可选函数。
  • [in] context:可选择附加到生成的 napi_threadsafe_function 的数据。
  • [in] call_js_cb:可选回调,用于响应在不同线程上的调用而调用 JavaScript 函数。此回调将在主线程上调用。如果未提供,将以无参数调用 JavaScript 函数,并将 undefined 作为其 this 值。napi_threadsafe_function_call_js 提供了更多详细信息。
  • [out] result:异步线程安全的 JavaScript 函数。

更改历史:

  • 实验性(定义了 NAPI_EXPERIMENTAL):

    call_js_cb 中抛出的未捕获异常将通过 'uncaughtException' 事件处理,而不是被忽略。