异步流程介绍
ArkTS是单线程的,其通过事件循环机制来处理异步任务,这一特性,同样也深入影响了Node-API的模块开发。在Native线程中既要保证没有多线程问题,又要保证任务的正确执行。
基于threadsafe的实现
方案概述
针对在HarmonyOS中,Native子线程不能直接访问ArkTS主线程的资源的场景,Node-API提供了napi_threadsafe_function这一套线程安全函数接口,用来实现异步通信操作。下面介绍napi_threadsafe_function的方式。
实现流程
-
应用侧传入需要执行的异步任务。
-
Native侧通过napi_create_threadsafe_function创建线程安全函数,将callback注册到线程安全函数中,等待后续其他线程抛异步任务进行回调。
-
通过napi_create_async_work,将ExecuteWork与WorkComplete添加为异步任务的执行回调与完成回调。
-
通过ExecuteWork函数进行业务处理,并执行线程安全函数,通过WorkComplete函数进行任务执行完成后的资源清理回收工作。
-
通过注册给线程安全函数的callback回