
鸿蒙原生应用开发-ArkTS语言基础类库多线程CPU密集型任务Worker
使用Worker进行长时间数据分析
通过某地区提供的房价数据训练一个简易的房价预测模型,该模型支持通过输入房屋面积和房间数量去预测该区域的房价,模型需要长时间运行,房价预测需要使用前面的模型运行结果,因此需要使用Worker。
1.DevEco Studio提供了Worker创建的模板,新建一个Worker线程,例如命名为“MyWorker”。
2.在主线程中通过调用ThreadWorker的constructor()方法创建Worker对象,当前线程为宿主线程。
3.在宿主线程中通过调用onmessage()方法接收Worker线程发送过来的消息,并通过调用postMessage()方法向Worker线程发送消息。
例如向Worker线程发送训练和预测的消息,同时接收Worker线程发送回来的消息。
4.在MyWorker.ts文件中绑定Worker对象,当前线程为Worker线程。
5.在Worker线程中通过调用onmessage()方法接收宿主线程发送的消息内容,并通过调用postMessage()方法向宿主线程发送消息。
例如在Worker线程中定义预测模型及其训练过程,同时与主线程进行信息交互。
在Worker线程中完成任务之后,执行Worker线程销毁操作。销毁线程的方式主要有两种:根据需要可以在宿主线程中对Worker线程进行销毁;也可以在Worker线程中主动销毁Worker线程。
6.在宿主线程中通过调用onexit()方法定义Worker线程销毁后的处理逻辑。
方式一:在宿主线程中通过调用terminate()方法销毁Worker线程,并终止Worker接收消息。
方式二:在Worker线程中通过调用close()方法主动销毁Worker线程,并终止Worker接收消息。
本文参考引用HarmonyOS官方开发文档,基于API9。
