相关问题
#鸿蒙通关秘籍# 如何在HarmonyOS NEXT中通过router跳转并传递复杂对象?
209浏览 • 0回复 待解决
#鸿蒙通关秘籍#如何跨线程传递鸿蒙系统中的PixelMap对象?
316浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在ArkTS中实现ArrayBuffer对象的拷贝传输?
355浏览 • 1回复 待解决
#鸿蒙通关秘籍#鸿蒙系统中如何在页面跳转时传递数据?
246浏览 • 1回复 待解决
#鸿蒙通关秘籍#在鸿蒙中如何使用转移模式的NativeBinding对象进行跨线程通信?
357浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在HarmonyOS NEXT中利用Navigation实现对象传递?
293浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在HarmonyOS NEXT中实现页面跳转时传递类对象?
297浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在鸿蒙中通过napi_wrap绑定ArkTS对象与C++对象?
276浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在鸿蒙开发中通过布局优化减少系统开销?
284浏览 • 1回复 待解决
#鸿蒙通关秘籍#鸿蒙中如何实现普通对象的跨线程传递?
176浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在鸿蒙开发中获取Context对象?
325浏览 • 2回复 待解决
#鸿蒙通关秘籍#如何在鸿蒙应用中获取应用对象?
325浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在HarmonyOS中创建PurgeableMemory对象?
318浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在HarmonyOS中读写PurgeableMemory对象?
234浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在鸿蒙系统中通过Native C/C++创建子进程?
267浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在鸿蒙系统中通过C/C++实现数据持久化?
256浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在鸿蒙系统中将ArkTS对象转换为native数据?
189浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在鸿蒙系统中声明共享模块?
241浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在鸿蒙IPC中实现远端对象消亡通知?
223浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在HarmonyOS中利用Navigation组件传递参数?
530浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在鸿蒙系统中使用callback方式进行异步任务开发?
316浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在鸿蒙系统中实现MessagePack对象序列化与反序列化?
357浏览 • 1回复 待解决
#鸿蒙通关秘籍#鸿蒙系统中如何转换Native应用信息为JavaScript对象?
276浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在鸿蒙系统中获取文档类URI?
185浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在鸿蒙系统中开发Native Bundle接口?
300浏览 • 1回复 待解决
在鸿蒙系统中,默认通过转移的方式传递ArrayBuffer对象。转移方式可以提高性能,传递后原线程无法使用传输到子线程的ArrayBuffer。在代码中通过传递
true
至createImageTask
函数中的第二个参数来确认传递方式为转移即可。typescript // Index.ets import { taskpool } from '@kit.ArkTS'; import { BusinessError } from '@kit.BasicServicesKit';
@Concurrent function adjustImageValue(arrayBuffer: ArrayBuffer): ArrayBuffer { return arrayBuffer; }
function createImageTask(arrayBuffer: ArrayBuffer, isParamsByTransfer: boolean): taskpool.Task { let task: taskpool.Task = new taskpool.Task(adjustImageValue, arrayBuffer); return task; }
@Entry @Component struct Index { @State message: string = 'Hello World';
build() { RelativeContainer() { Text(this.message) .id('HelloWorld') .fontSize(50) .fontWeight(FontWeight.Bold) .alignRules({ center: { anchor: 'container', align: VerticalAlign.Center }, middle: { anchor: 'container', align: HorizontalAlign.Center } }) .onClick(() => { let taskNum = 4; let arrayBuffer = new ArrayBuffer(1024 * 1024); let taskPoolGroup = new taskpool.TaskGroup(); for (let i: number = 0; i < taskNum; i++) { let arrayBufferSlice: ArrayBuffer = arrayBuffer.slice(arrayBuffer.byteLength / taskNum * i, arrayBuffer.byteLength / taskNum * (i + 1)); taskPoolGroup.addTask(createImageTask(arrayBufferSlice, true)); } taskpool.execute(taskPoolGroup).then((data) => {}).catch((e: BusinessError) => { console.error(e.message); }) }) } .height('100%') .width('100%') } }